From 86e7054f1662585045b00a95d125f29da92e8d6d Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Fri, 29 Oct 2004 07:54:18 +0000 Subject: [PATCH] type for SymConst [r4241] --- ir/ir/irnode.c | 17 ++++++++++++++++- ir/ir/irnode.h | 21 +++++++++++++++------ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index e7afc88d7..bfcb28705 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -870,6 +870,10 @@ set_Const_type (ir_node *node, type *tp) { assert (get_type_mode(tp) == get_irn_mode(node)); } + if ((get_irn_node_nr(node) == 259216) && (tp == unknown_type)) + assert(0); + + node->attr.con.tp = tp; } @@ -930,7 +934,6 @@ void set_SymConst_entity (ir_node *node, entity *ent) { node->attr.i.sym.entity_p = ent; } - union symconst_symbol get_SymConst_symbol (ir_node *node) { assert (node->op == op_SymConst); @@ -944,6 +947,18 @@ set_SymConst_symbol (ir_node *node, union symconst_symbol sym) { node->attr.i.sym = sym; } +type * +get_SymConst_value_type (ir_node *node) { + assert (node->op == op_SymConst); + return node->attr.i.tp = skip_tid(node->attr.i.tp); +} + +void +set_SymConst_value_type (ir_node *node, type *tp) { + assert (node->op == op_SymConst); + node->attr.i.tp = tp; +} + ir_node * get_Sel_mem (ir_node *node) { assert (node->op == op_Sel); diff --git a/ir/ir/irnode.h b/ir/ir/irnode.h index ed1d7c74f..4803fcc85 100644 --- a/ir/ir/irnode.h +++ b/ir/ir/irnode.h @@ -87,8 +87,7 @@ typedef struct ir_node ir_node; #endif #ifdef __cplusplus - extern "C" { - +extern "C" { #endif /** @@ -223,9 +222,13 @@ new_ir_node (dbg_info *db, * */ -/** This works for all except Block. To express the difference to - * access routines that work for all nodes we use infix "nodes" and do not - * name this function get_irn_block. */ +/** Return the block the node belongs to. + * + * This works for all except Block. It can return Blocks or the Bad node. + * + * To express the difference to access routines that work for all + * nodes we use infix "nodes" and do not name this function + * get_irn_block. */ ir_node *get_nodes_block (ir_node *node); void set_nodes_block (ir_node *node, ir_node *block); @@ -430,6 +433,12 @@ union symconst_symbol get_SymConst_symbol (ir_node *node); void set_SymConst_symbol (ir_node *node, union symconst_symbol sym); +/** Access the type of the value represented by the SymConst. + * + * Example: primitive type int for SymConst size. */ +type *get_SymConst_value_type (ir_node *node); +void set_SymConst_value_type (ir_node *node, type *tp); + ir_node *get_Sel_mem (ir_node *node); void set_Sel_mem (ir_node *node, ir_node *mem); ir_node *get_Sel_ptr (ir_node *node); /* ptr to the object to select from */ @@ -756,7 +765,7 @@ ir_node *get_Filter_cg_pred(ir_node *node, int pos); /** Return true if parameter is a memory operation. * - * A memory operation is an operation that directly changes the + * A memory operation is an operation that changes the * memory. I.e., a Load or a Store operation. */ int is_memop(ir_node *node); -- 2.20.1