re PR debug/48768 (ICE in get_expr_operands())
authorJakub Jelinek <jakub@redhat.com>
Tue, 26 Apr 2011 13:35:21 +0000 (15:35 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 26 Apr 2011 13:35:21 +0000 (15:35 +0200)
PR debug/48768
* tree-ssa.c (insert_debug_temp_for_var_def): If degenerate_phi_result
is error_mark_node, set value to NULL.

* gcc.dg/pr48768.c: New test.

From-SVN: r172968

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr48768.c [new file with mode: 0644]
gcc/tree-ssa.c

index 0bf1088b0bbadc26a470ba62dab24c6b52df96bf..b528cf31eae41219987d2285853e77570df684c6 100644 (file)
@@ -1,5 +1,9 @@
 2011-04-26  Jakub Jelinek  <jakub@redhat.com>
 
+       PR debug/48768
+       * tree-ssa.c (insert_debug_temp_for_var_def): If degenerate_phi_result
+       is error_mark_node, set value to NULL.
+
        PR tree-optimization/48734
        * tree-ssa-reassoc.c (eliminate_redundant_comparison): Give up
        if return value from maybe_fold_*_comparsions isn't something
index c07caacb2c156fce4deba7043fb1f6190effed9d..3630dcef68b3756c8194134a39dbf404ba5b0c0a 100644 (file)
@@ -1,5 +1,8 @@
 2011-04-26  Jakub Jelinek  <jakub@redhat.com>
 
+       PR debug/48768
+       * gcc.dg/pr48768.c: New test.
+
        PR tree-optimization/48734
        * gcc.c-torture/compile/pr48734.c: New test.
 
diff --git a/gcc/testsuite/gcc.dg/pr48768.c b/gcc/testsuite/gcc.dg/pr48768.c
new file mode 100644 (file)
index 0000000..7d0383e
--- /dev/null
@@ -0,0 +1,38 @@
+/* PR debug/48768 */
+/* { dg-do compile } */
+/* { dg-options "-O -fcompare-debug" } */
+
+int a, b;
+
+int
+bar (void)
+{
+  int i, j = 1;
+  for (i = 0; i != 10; i++)
+    {
+    lab:
+      if (i)
+       {
+         int *k = &j;
+       }
+      else if (j)
+       goto lab;
+    }
+  return 1;
+}
+
+inline int
+foo (int x)
+{
+  unsigned int c = x;
+  int d = x;
+  if (bar ())
+    for (; c; c++)
+      while (x >= 0)
+       if (foo (d) >= 0)
+         {
+           d = bar ();
+           a = b ? b : 1;
+         }
+  return 0;
+}
index 4cd86c6781f6cb2a639ad96af440710924f32945..7f0a077b0444e021323db350707b8d8ff3a27fe2 100644 (file)
@@ -1,5 +1,5 @@
 /* Miscellaneous SSA utility functions.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -352,6 +352,10 @@ insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var)
       value = degenerate_phi_result (def_stmt);
       if (value && walk_tree (&value, find_released_ssa_name, NULL, NULL))
        value = NULL;
+      /* error_mark_node is what fixup_noreturn_call changes PHI arguments
+        to.  */
+      else if (value == error_mark_node)
+       value = NULL;
     }
   else if (is_gimple_assign (def_stmt))
     {