X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fst%2Fexc.c;h=be253feaba78dc647dad62f4a5043eaacbbe7679;hb=aba01c4d362c4aa88f52605bf0e366b490f04ee3;hp=1898247daf0b7b35af4c1da25c70c068232adb46;hpb=9953b866820fe8716593777c3453aed47c92a1b9;p=libfirm diff --git a/ir/st/exc.c b/ir/st/exc.c index 1898247da..be253feab 100644 --- a/ir/st/exc.c +++ b/ir/st/exc.c @@ -1,19 +1,22 @@ -/* Copyright (c) 2002 by Universität Karlsruhe (TH). All Rights Reserved */ -// -// Time-stamp: -// - -/*** +/* + * Project: libFIRM + * File name: ir/st/exc.c + * 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 "exc.h" @@ -40,7 +43,7 @@ static bool has_handler (ir_graph *graph, ir_node *b, ir_node *a) ir_node *succ = 0; assert (0 && "Wrongly implemented"); - // must check for _immediate_ dominance !!! + /* must check for _immediate_ dominance !!! */ if (is_handler_entry (graph, b) && dominates (graph, a, b)) return (true); @@ -63,15 +66,15 @@ static bool is_exc_jmp (ir_node *node) { ir_op *op = get_irn_op (node); - // Proj_X (Load), Proj_X (Sto), Proj_X (Div_Int), - // Proj_X (Raise), Proj_X (Call), Proj_X (Alloc) + /* Proj_X (Load), Proj_X (Sto), Proj_X (Div_Int), + Proj_X (Raise), Proj_X (Call), Proj_X (Alloc) */ if (op == op_Proj) { op = get_irn_op (get_Proj_pred (node)); assert ((is_fragile_op(get_Proj_pred(node))) && (op != op_Bad) /*&& (op != op_Unknown)*/ && - (get_irn_mode(node) == mode_X));// Check for proper Proj attr + (get_irn_mode(node) == mode_X));/* Check for proper Proj attr */ return (true); } else @@ -83,21 +86,56 @@ static bool is_exc_jmp (ir_node *node) /* Return true iff the given node represents a normal cfg jump */ +#if 0 static bool is_cfg_jmp (ir_node *node) { ir_op *op = get_irn_op (node); if (op == op_Proj) - { - op = get_irn_op (get_Proj_pred (node)); + { + op = get_irn_op (get_Proj_pred (node)); - // Proj_X (Proj_Cmp (Cond)) - if (op_Proj == op) - return (true); /* check for op == op_Cmp and op == op_Cond */ - } + /* Proj_X (Proj_Cmp (Cond)) */ + if (op_Proj == op) + return (true); /* check for op == op_Cmp and op == op_Cond */ + } return (false); } +#endif + +void set_Block_exc(ir_node *n, exc_t exc) { +} + +exc_t get_Block_exc(ir_node *n) { + return 0; +} + + +/* handler handling for Blocks */ +void +set_Block_handler (ir_node *block, ir_node *handler) { + assert (is_Block(block)); + assert (is_Block(handler)); +} + +ir_node * +get_Block_handler (ir_node *block) { + assert (is_Block(block)); + return (NULL); +} + +/* handler handling for Nodes */ +void +set_Node_handler (ir_node *node, ir_node *handler) { + +} + +ir_node * +get_Node_handler (ir_node *node) { + return (NULL); +} + /* Return true iff a new exception region must be left upon entry of this block. @@ -113,7 +151,7 @@ bool is_handler_entry (ir_graph *graph, ir_node *block) if (exc_invalid == get_Block_exc (block)) { - for (i = 0; (i < n) && is_entry; i ++) + for (i = 0; (i < n) && (is_entry == true); i ++) if (is_exc_jmp (get_irn_n (block, i))) continue; else @@ -143,7 +181,7 @@ bool is_region_entry (ir_graph *graph, ir_node *block) bool no_handler = true; - for (i = 0; (i < n) && no_handler; i ++) + for (i = 0; (i < n) && (no_handler == true); i ++) { succ = get_irn_out (block, i); @@ -157,7 +195,7 @@ bool is_region_entry (ir_graph *graph, ir_node *block) return (exc_region == get_Block_exc (block)); - return (TRUE); + return (true); } /* @@ -179,7 +217,7 @@ bool is_handler_block (ir_graph *graph, ir_node *block) int n_blocks = env->dt->n_blocks; int i = 0; - for (i = 0; (i < n_blocks) && no_handler; i ++) + for (i = 0; (i < n_blocks) && (no_handler == true); i ++) if (0 != (env->dt->masks [i] & block_mask)) /* if dominator */ if (is_handler_entry (graph, env->dt->blocks [i])) /* is handler entry */ no_handler = false;