X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fst%2Fexc.h;h=f2706649148f178ced755137fdf6fb9eaf231e48;hb=ad7ea5e733b5a62df40a954ff5acdb2131cc4ace;hp=96957703fcce15e0ea79bdf5851edd86cbefee69;hpb=5ff40d04f7617b3ea10b11ef9b46dbdb7d02249c;p=libfirm diff --git a/ir/st/exc.h b/ir/st/exc.h index 96957703f..f27066491 100644 --- a/ir/st/exc.h +++ b/ir/st/exc.h @@ -1,14 +1,14 @@ /* Copyright (c) 2002 by Universität Karlsruhe (TH). All Rights Reserved */ -// -// Time-stamp: <02/03/22 17:03:05 liekweg> -// +/* +* Time-stamp: +*/ -/*** +/** NAME exc PURPOSE Helper functions for exceptions - NOTES + S not quite complete HISTORY liekweg - Mar 4, 2002: Created. @@ -21,18 +21,46 @@ # ifndef _EXC_H_ # define _EXC_H_ +# include "st.h" +# include "irop.h" +# include "irouts.h" + +#include + typedef enum { - exc_invalid, /* not yet computed */ + exc_invalid = 0, /* not yet computed */ exc_normal, /* normal CF */ - exc_entry, /* handler entry */ - exc_handler, /* handler block */ + + /* must push a new exc context at entry of block: */ exc_region, /* region entry */ - exc_cont /* cont block */ + + /* must pop current exc context at EXIT of block */ + exc_exit, /* region exit */ + + /* must pop current exc context at entry of block */ + exc_handler, /* handler entry */ + + exc_max /* maximum value of enum for 'bounds checking' */ } exc_t; +const char *exc_to_string (exc_t); + bool is_handler_entry (ir_graph*, ir_node*); bool is_region_entry (ir_graph*, ir_node*); bool is_handler_block (ir_graph*, ir_node*); bool is_cont_entry (ir_graph*, ir_node*); +void set_Block_exc (ir_node*, exc_t); +exc_t get_Block_exc (ir_node*); + +void set_Node_exc (ir_node*, exc_t); +exc_t get_Node_exc (ir_node*); + +/* handler handling @@@ ajacs specific -- not supported */ +void set_Block_handler (ir_node*, ir_node*); +ir_node* get_Block_handler (ir_node*); + +void set_Node_handler (ir_node*, ir_node*); +ir_node* get_Node_handler (ir_node*); + # endif /* def _EXC_H_ */