X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fst%2Fexc.h;h=826b270138a6d3d96e3dc351566a4de427e87f8f;hb=184602875611495e608c27263d0a5a8f24078a70;hp=27d3ed80b6e696fc3b3817d4d7655277afa6a64e;hpb=92c43a69835d96b6bec29019b449f0dffa1b831a;p=libfirm diff --git a/ir/st/exc.h b/ir/st/exc.h index 27d3ed80b..826b27013 100644 --- a/ir/st/exc.h +++ b/ir/st/exc.h @@ -1,46 +1,58 @@ -/* Copyright (c) 2002 by Universität Karlsruhe (TH). All Rights Reserved */ -// -// Time-stamp: <02/03/22 17:03:05 liekweg> -// +/* + * Project: libFIRM + * File name: ir/st/exc.h + * Purpose: Helper functions for jack exceptions. + * Author: Florian Liekweg + * Modified by: + * Created: 4.3.2002 + * CVS-ID: $Id$ + * Copyright: (c) 2002-2003 Universität Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + */ -/*** + +/** NAME exc PURPOSE Helper functions for exceptions - NOTES + S not quite complete - HISTORY - liekweg - Mar 4, 2002: Created. - CVS: - $Id$ ***/ +# include "irnode.h" + # ifndef _EXC_H_ # define _EXC_H_ -# include "irnode.h" - # include "st.h" # include "irop.h" # include "irouts.h" -# include +#include + +#ifdef __cplusplus + extern "C" { +#endif typedef enum { - exc_invalid, /* not yet computed */ + exc_invalid = 0, /* not yet computed */ exc_normal, /* normal CF */ - // must push a new exc contrext at entry of block: + /* must push a new exc context at entry of block: */ exc_region, /* region entry */ - // must pop current exc contrext at entry of 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_cont, /* cont block */ 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*); @@ -48,5 +60,21 @@ 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*); + +#ifdef __cplusplus +} +#endif # endif /* def _EXC_H_ */