VN now inserts all sorts of calls into the references hashtable,
not only those which produce a value.  This results in missing
initializations of ->value_id which eventually PRE ends up
accessing.

The following fixes that.

Bootstrap and regtest pending on x86_64-unknown-linux-gnu.

Richard.

2013-03-05  Richard Biener  <rguent...@suse.de>

        * tree-ssa-sccvn.c (set_value_id_for_result): For a NULL
        result set a new value-id.

Index: gcc/tree-ssa-sccvn.c
===================================================================
--- gcc/tree-ssa-sccvn.c        (revision 196451)
+++ gcc/tree-ssa-sccvn.c        (working copy)
@@ -3954,7 +3962,7 @@ free_scc_vn (void)
   XDELETE (optimistic_info);
 }
 
-/* Set *ID if we computed something useful in RESULT.  */
+/* Set *ID according to RESULT.  */
 
 static void
 set_value_id_for_result (tree result, unsigned int *id)
@@ -3966,6 +3974,8 @@ set_value_id_for_result (tree result, un
       else if (is_gimple_min_invariant (result))
        *id = get_or_alloc_constant_value_id (result);
     }
+  else
+    *id = get_next_value_id ();
 }
 
 /* Set the value ids in the valid hash tables.  */

Reply via email to