X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=e32e06694162379af37bd5be9834da667723b02a;hb=8eba666265da97ca53dc7b81bb1ee981833e435e;hp=e4770857a106125ee198cc381f8fa759698c61ff;hpb=dae26cfe54b2f992bd781091ca9c94035bbf981f;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index e4770857a..e32e06694 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -1,15 +1,28 @@ /* - * Project: libFIRM - * File name: ir/ir/irnode.c - * Purpose: Representation of an intermediate operation. - * Author: Martin Trapp, Christian Schaefer - * Modified by: Goetz Lindenmaier, Michael Beck - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1998-2006 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ +/** + * @file + * @brief Representation of an intermediate operation. + * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Michael Beck + * @version $Id$ + */ #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -605,7 +618,7 @@ get_irn_except_attr(ir_node *node) { } void * -get_irn_generic_attr(ir_node *node) { +get_irn_generic_attr(const ir_node *node) { return &node->attr; } @@ -1085,7 +1098,7 @@ set_SymConst_type(ir_node *node, ir_type *tp) { } ident * -get_SymConst_name(ir_node *node) { +get_SymConst_name(const ir_node *node) { assert(node->op == op_SymConst && SYMCONST_HAS_ID(get_SymConst_kind(node))); return node->attr.symc.sym.ident_p; } @@ -1098,7 +1111,7 @@ set_SymConst_name(ir_node *node, ident *name) { /* Only to access SymConst of kind symconst_addr_ent. Else assertion: */ -ir_entity *get_SymConst_entity(ir_node *node) { +ir_entity *get_SymConst_entity(const ir_node *node) { assert(node->op == op_SymConst && SYMCONST_HAS_ENT(get_SymConst_kind(node))); return node->attr.symc.sym.entity_p; } @@ -1108,7 +1121,7 @@ void set_SymConst_entity(ir_node *node, ir_entity *ent) { node->attr.symc.sym.entity_p = ent; } -ir_enum_const *get_SymConst_enum(ir_node *node) { +ir_enum_const *get_SymConst_enum(const ir_node *node) { assert(node->op == op_SymConst && SYMCONST_HAS_ENUM(get_SymConst_kind(node))); return node->attr.symc.sym.enum_p; } @@ -1119,7 +1132,7 @@ void set_SymConst_enum(ir_node *node, ir_enum_const *ec) { } union symconst_symbol -get_SymConst_symbol(ir_node *node) { +get_SymConst_symbol(const ir_node *node) { assert(node->op == op_SymConst); return node->attr.symc.sym; } @@ -1339,7 +1352,7 @@ void set_CallBegin_call(ir_node *node, ir_node *call) { #define BINOP(OP) \ -ir_node * get_##OP##_left(ir_node *node) { \ +ir_node * get_##OP##_left(const ir_node *node) { \ assert(node->op == op_##OP); \ return get_irn_n(node, node->op->op_index); \ } \ @@ -1347,7 +1360,7 @@ void set_##OP##_left(ir_node *node, ir_node *left) { \ assert(node->op == op_##OP); \ set_irn_n(node, node->op->op_index, left); \ } \ -ir_node *get_##OP##_right(ir_node *node) { \ +ir_node *get_##OP##_right(const ir_node *node) { \ assert(node->op == op_##OP); \ return get_irn_n(node, node->op->op_index + 1); \ } \ @@ -1357,7 +1370,7 @@ void set_##OP##_right(ir_node *node, ir_node *right) { \ } #define UNOP(OP) \ -ir_node *get_##OP##_op(ir_node *node) { \ +ir_node *get_##OP##_op(const ir_node *node) { \ assert(node->op == op_##OP); \ return get_irn_n(node, node->op->op_index); \ } \ @@ -1476,7 +1489,7 @@ int } ir_node * -get_unop_op(ir_node *node) { +get_unop_op(const ir_node *node) { if (node->op->opar == oparity_unary) return get_irn_n(node, node->op->op_index); @@ -1498,7 +1511,7 @@ int } ir_node * -get_binop_left(ir_node *node) { +get_binop_left(const ir_node *node) { assert(node->op->opar == oparity_binary); return get_irn_n(node, node->op->op_index); } @@ -1510,7 +1523,7 @@ set_binop_left(ir_node *node, ir_node *left) { } ir_node * -get_binop_right(ir_node *node) { +get_binop_right(const ir_node *node) { assert(node->op->opar == oparity_binary); return get_irn_n(node, node->op->op_index + 1); } @@ -1882,6 +1895,16 @@ set_Proj_pred(ir_node *node, ir_node *pred) { set_irn_n(node, 0, pred); } +long get_VProj_proj(const ir_node *node) +{ + return node->attr.proj; +} + +void set_VProj_proj(ir_node *node, long value) +{ + node->attr.proj = value; +} + long get_Proj_proj(const ir_node *node) { assert(is_Proj(node)); @@ -2283,7 +2306,7 @@ void set_Bound_upper(ir_node *bound, ir_node *upper) { } /* Return the operand of a Pin node. */ -ir_node *get_Pin_op(ir_node *pin) { +ir_node *get_Pin_op(const ir_node *pin) { assert(pin->op == op_Pin); return get_irn_n(pin, 0); } @@ -2475,6 +2498,16 @@ int return _is_Quot(node); } +int +(is_Add)(const ir_node *node) { + return _is_Add(node); +} + +int +(is_Sub)(const ir_node *node) { + return _is_Sub(node); +} + int (is_Start)(const ir_node *node) { return _is_Start(node); @@ -2490,6 +2523,11 @@ int return _is_Const(node); } +int +(is_Conv)(const ir_node *node) { + return _is_Conv(node); +} + int (is_no_Block)(const ir_node *node) { return _is_no_Block(node);