From: Michael Beck Date: Tue, 24 May 2005 13:43:39 +0000 (+0000) Subject: skip_HighLevel() added X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=110bd12dbf9c9b76f1de6d10c635bd3545a9b0cd;p=libfirm skip_HighLevel() added cleaned up [r5888] --- diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index c02bffb20..11e66905a 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -2042,13 +2042,25 @@ skip_Tuple (ir_node *node) { return node; } -/** returns operand of node if node is a Cast */ +/* returns operand of node if node is a Cast */ ir_node *skip_Cast (ir_node *node) { if (node && get_irn_op(node) == op_Cast) { - return skip_Id(get_irn_n(node, 0)); - } else { - return node; - } + return get_Cast_op(node); + return node; +} + +/* returns operand of node if node is a Confirm */ +ir_node *skip_Confirm (ir_node *node) { + if (node && get_irn_op(node) == op_Confirm) { + return get_Confirm_value(node); + return node; +} + +/* skip all high-level ops */ +ir_node *skip_HighLevel(ir_node *node) { + if (node && is_op_highlevel(get_irn_op(node))) + return get_irn_n(node, 0); + return node; } #if 0 diff --git a/ir/ir/irnode.h b/ir/ir/irnode.h index 13e393dac..c8cc39e4e 100644 --- a/ir/ir/irnode.h +++ b/ir/ir/irnode.h @@ -904,6 +904,10 @@ ir_node *skip_Id (ir_node *node); /* Same as skip_nop. */ ir_node *skip_Tuple (ir_node *node); /** returns operand of node if node is a Cast */ ir_node *skip_Cast (ir_node *node); +/** returns operand of node if node is a Confirm */ +ir_node *skip_Confirm (ir_node *node); +/** Skip all high-level Operations. */ +ir_node *skip_HighLevel(ir_node *node); /** returns true if irn is a Const node. */ int is_Const(const ir_node *node); /** returns true if node is a Bad node. */