Commit 86e7054f authored by Götz Lindenmaier's avatar Götz Lindenmaier
Browse files

type for SymConst

[r4241]
parent 30faf8c2
...@@ -870,6 +870,10 @@ set_Const_type (ir_node *node, type *tp) { ...@@ -870,6 +870,10 @@ set_Const_type (ir_node *node, type *tp) {
assert (get_type_mode(tp) == get_irn_mode(node)); 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; node->attr.con.tp = tp;
} }
...@@ -930,7 +934,6 @@ void set_SymConst_entity (ir_node *node, entity *ent) { ...@@ -930,7 +934,6 @@ void set_SymConst_entity (ir_node *node, entity *ent) {
node->attr.i.sym.entity_p = ent; node->attr.i.sym.entity_p = ent;
} }
union symconst_symbol union symconst_symbol
get_SymConst_symbol (ir_node *node) { get_SymConst_symbol (ir_node *node) {
assert (node->op == op_SymConst); assert (node->op == op_SymConst);
...@@ -944,6 +947,18 @@ set_SymConst_symbol (ir_node *node, union symconst_symbol sym) { ...@@ -944,6 +947,18 @@ set_SymConst_symbol (ir_node *node, union symconst_symbol sym) {
node->attr.i.sym = 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 * ir_node *
get_Sel_mem (ir_node *node) { get_Sel_mem (ir_node *node) {
assert (node->op == op_Sel); assert (node->op == op_Sel);
......
...@@ -87,8 +87,7 @@ typedef struct ir_node ir_node; ...@@ -87,8 +87,7 @@ typedef struct ir_node ir_node;
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/** /**
...@@ -223,9 +222,13 @@ new_ir_node (dbg_info *db, ...@@ -223,9 +222,13 @@ new_ir_node (dbg_info *db,
* *
*/ */
/** This works for all except Block. To express the difference to /** Return the block the node belongs to.
* access routines that work for all nodes we use infix "nodes" and do not *
* name this function get_irn_block. */ * 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); ir_node *get_nodes_block (ir_node *node);
void set_nodes_block (ir_node *node, ir_node *block); void set_nodes_block (ir_node *node, ir_node *block);
...@@ -430,6 +433,12 @@ union symconst_symbol get_SymConst_symbol (ir_node *node); ...@@ -430,6 +433,12 @@ union symconst_symbol get_SymConst_symbol (ir_node *node);
void set_SymConst_symbol (ir_node *node, void set_SymConst_symbol (ir_node *node,
union symconst_symbol sym); 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); ir_node *get_Sel_mem (ir_node *node);
void set_Sel_mem (ir_node *node, ir_node *mem); 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 */ 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); ...@@ -756,7 +765,7 @@ ir_node *get_Filter_cg_pred(ir_node *node, int pos);
/** Return true if parameter is a memory operation. /** 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. * memory. I.e., a Load or a Store operation.
*/ */
int is_memop(ir_node *node); int is_memop(ir_node *node);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment