re PR middle-end/65233 (ICE (segfault) on arm-linux-gnueabihf and aarch64-linux-gnu)
authorRichard Biener <rguenther@suse.de>
Thu, 5 Mar 2015 08:37:40 +0000 (08:37 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 5 Mar 2015 08:37:40 +0000 (08:37 +0000)
2015-03-05  Richard Biener  <rguenther@suse.de>

PR middle-end/65233
* ipa-polymorphic-call.c: Include tree-ssa-operands.h and
tree-into-ssa.h.
(walk_ssa_copies): Revert last chage.  Instead do not walk
SSA names registered for SSA update.

From-SVN: r221203

gcc/ChangeLog
gcc/ipa-polymorphic-call.c

index 55e212dffd5b629c90e16a44c3fc54b6d318e1b4..93b88681e5f877f318936eed6c133b84e3bcdbc0 100644 (file)
@@ -1,3 +1,11 @@
+2015-03-05  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/65233
+       * ipa-polymorphic-call.c: Include tree-ssa-operands.h and
+       tree-into-ssa.h.
+       (walk_ssa_copies): Revert last chage.  Instead do not walk
+       SSA names registered for SSA update.
+
 2015-03-03  Jan Hubicka  <hubicka@ucw.cz>
 
        PR ipa/65270
index 13cc7f647ff1c1888a700803fdde469418e8b919..90303f1bcfc3fd40d05f8e39d2dcbe2961e7b110 100644 (file)
@@ -81,6 +81,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "data-streamer.h"
 #include "lto-streamer.h"
 #include "streamer-hooks.h"
+#include "tree-ssa-operands.h"
+#include "tree-into-ssa.h"
 
 /* Return true when TYPE contains an polymorphic type and thus is interesting
    for devirtualization machinery.  */
@@ -804,7 +806,9 @@ walk_ssa_copies (tree op, hash_set<tree> **global_visited = NULL)
   STRIP_NOPS (op);
   while (TREE_CODE (op) == SSA_NAME
         && !SSA_NAME_IS_DEFAULT_DEF (op)
-        && SSA_NAME_DEF_STMT (op)
+        /* We might be called via fold_stmt during cfgcleanup where
+           SSA form need not be up-to-date.  */
+        && !name_registered_for_update_p (op) 
         && (gimple_assign_single_p (SSA_NAME_DEF_STMT (op))
             || gimple_code (SSA_NAME_DEF_STMT (op)) == GIMPLE_PHI))
     {
@@ -835,10 +839,7 @@ walk_ssa_copies (tree op, hash_set<tree> **global_visited = NULL)
        {
          gimple phi = SSA_NAME_DEF_STMT (op);
 
-         if (gimple_phi_num_args (phi) > 2
-             /* We can be called while cleaning up the CFG and can
-                have empty PHIs about to be removed.  */
-             || gimple_phi_num_args (phi) == 0)
+         if (gimple_phi_num_args (phi) > 2)
            goto done;
          if (gimple_phi_num_args (phi) == 1)
            op = gimple_phi_arg_def (phi, 0);