]> gcc.gnu.org Git - gcc.git/commitdiff
re PR tree-optimization/59102 (ICE on valid code at -Os and above on x86_64-linux...
authorJeff Law <law@gcc.gnu.org>
Thu, 14 Nov 2013 03:18:17 +0000 (20:18 -0700)
committerJeff Law <law@gcc.gnu.org>
Thu, 14 Nov 2013 03:18:17 +0000 (20:18 -0700)
PR tree-optimization/59102
* gimple-ssa-isolate-paths.c
(insert_trap_and_remove_trailing_statments): Ensure STMT is a
gimple assignment before looking at gimple_assign_lhs.

PR tree-optimization/59102
* gcc.c-torture/compile/pr59102.c: New test.

From-SVN: r204773

gcc/ChangeLog
gcc/gimple-ssa-isolate-paths.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr59102.c [new file with mode: 0644]

index 91c22d3ed09e1a9dadf8b070b9d9595a64e53ccb..6cb12486d7e03f730da61fa4baf15e4f11ade8a9 100644 (file)
@@ -1,3 +1,10 @@
+2013-11-13  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/59102
+       * gimple-ssa-isolate-paths.c
+       (insert_trap_and_remove_trailing_statments): Ensure STMT is a
+       gimple assignment before looking at gimple_assign_lhs.
+
 2013-11-13  Vladimir Makarov  <vmakarov@redhat.com>
 
        * ira.c: Add comment about threads at the top of file.
index f9bb249436f491f01bff78712108d483f3400b5c..108b98e2917b990f5d02cb4038730c43fabdc5ea 100644 (file)
@@ -74,9 +74,11 @@ insert_trap_and_remove_trailing_statements (gimple_stmt_iterator *si_p, tree op)
      LHS will be a throw-away SSA_NAME and the RHS is the NULL dereference.
 
      If the dereference is a store and we can easily transform the RHS,
-     then simplify the RHS to enable more DCE.  */
+     then simplify the RHS to enable more DCE.   Note that we require the
+     statement to be a GIMPLE_ASSIGN which filters out calls on the RHS.  */
   gimple stmt = gsi_stmt (*si_p);
   if (walk_stmt_load_store_ops (stmt, (void *)op, NULL, check_loadstore)
+      && is_gimple_assign (stmt)
       && INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_lhs (stmt))))
     {
       /* We just need to turn the RHS into zero converted to the proper
index ddbb62eeb073491f8e2a507b0dec1de86fa7c301..7855d7313c3e91814fe70abc4d516d4ce510e3f4 100644 (file)
@@ -1,4 +1,9 @@
-2013-11-14  Tom de Vries  <tom@codesourcery.com>
+2013-11-13  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/59102
+       * gcc.c-torture/compile/pr59102.c: New test.
+        
+2013-11-13  Tom de Vries  <tom@codesourcery.com>
 
        * gcc.dg/tail-merge-store.c: New test.
 
@@ -7,7 +12,7 @@
        * testsuite/g++.dg/plugin/selfassign.c: Include gimple-iterator.h.
        * testsuite/gcc.dg/plugin/selfassign.c: Likewise.
 
-2013-11-12  Jeff Law  <law@redhat.com>
+2013-11-13  Jeff Law  <law@redhat.com>
 
        * PR middle-end/59119
        * gcc.c-torture/compile/pr59119.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr59102.c b/gcc/testsuite/gcc.c-torture/compile/pr59102.c
new file mode 100644 (file)
index 0000000..4954733
--- /dev/null
@@ -0,0 +1,28 @@
+
+int a, b, c, f;
+
+struct S
+{
+  int f0;
+} d, *e;
+
+struct S
+foo ()
+{
+  b = c = b || a == 0 || f % 11;
+  return d;
+}
+
+int
+main ()
+{
+  foo ();
+  if (b);
+  else
+    {
+      struct S **g = &e;
+      *g = 0;
+      *e = foo ();
+    }
+  return 0;
+}
This page took 0.146766 seconds and 5 git commands to generate.