type for SymConst
authorGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Fri, 29 Oct 2004 07:54:18 +0000 (07:54 +0000)
committerGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Fri, 29 Oct 2004 07:54:18 +0000 (07:54 +0000)
[r4241]

ir/ir/irnode.c
ir/ir/irnode.h

index e7afc88..bfcb287 100644 (file)
@@ -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);
index ed1d7c7..4803fcc 100644 (file)
@@ -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);