Otptimization of SymConst to Const.
authorGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Thu, 14 Mar 2002 12:53:24 +0000 (12:53 +0000)
committerGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Thu, 14 Mar 2002 12:53:24 +0000 (12:53 +0000)
[r331]

ir/ir/irgopt.h
ir/ir/iropt.c

index 8b15048..b0215a6 100644 (file)
@@ -35,6 +35,8 @@ void dead_node_elimination(ir_graph *irg);
 void remove_bad_predecessors(ir_graph *irg);
 
 /* Inlines a method at the given call site.
+   Removes the call node and splits the basic block the call node
+   belongs to.  Inserts a copy of the called graph between these nodes.
    Assumes that call is a Call node in current_ir_graph and that
    the type in the Call nodes type attribute is the same as the
    type of the called graph.
@@ -49,8 +51,8 @@ void remove_bad_predecessors(ir_graph *irg);
    if they are equal.
    Sets visited masterflag in current_ir_graph to the max of the flag in
    current and called graph.
-   Removes the call node and splits the basic block the call node
-   belongs to.  Inserts a copy of the called graph between these nodes.
+   Assumes that both, the called and the calling graph are in state
+   "pinned".
    It is recommended to call local_optimize_graph after inlining as this
    function leaves a set of obscure Tuple nodes, e.g. a Proj-Tuple-Jmp
    combination as control flow operation. */
index 83ffd73..88555f9 100644 (file)
@@ -72,6 +72,12 @@ computed_value (ir_node *n)
   switch (get_irn_opcode(n)) {
   case iro_Const:
     res = get_Const_tarval(n);
+    break;
+  case iro_SymConst:
+    if ((get_SymConst_kind(n) == size) &&
+       (get_type_state(get_SymConst_type(n))) == layout_fixed)
+      res = tarval_from_long (mode_i, get_type_size(get_SymConst_type(n)));
+    break;
   case iro_Add:
     if (ta && tb && (get_irn_mode(a) == get_irn_mode(b))
        && (get_irn_mode(a) != mode_p)) {