]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR tree-optimization/58164
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Aug 2013 09:05:52 +0000 (09:05 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Aug 2013 09:05:52 +0000 (09:05 +0000)
* gimple.c (walk_stmt_load_store_addr_ops): For visit_addr
walk gimple_goto_dest of GIMPLE_GOTO.

* gcc.c-torture/compile/pr58164.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201782 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimple.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr58164.c [new file with mode: 0644]

index 810b8a5528814696056176f4ab07c14a4768a44a..004dfb44999e702826b0af07c6608fd0edf7a70b 100644 (file)
@@ -1,5 +1,9 @@
 2013-08-16  Jakub Jelinek  <jakub@redhat.com>
 
+       PR tree-optimization/58164
+       * gimple.c (walk_stmt_load_store_addr_ops): For visit_addr
+       walk gimple_goto_dest of GIMPLE_GOTO.
+
        PR tree-optimization/58165
        * tree-call-cdce.c (shrink_wrap_one_built_in_call): If
        bi_call must be the last stmt in a bb, don't split_block, instead
index f5074199381bf4baefb16c164257b2272c62cb89..ae9fca716cac19cbdbfd4244dedf8cde245286de 100644 (file)
@@ -4049,6 +4049,13 @@ walk_stmt_load_store_addr_ops (gimple stmt, void *data,
            ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
        }
     }
+  else if (visit_addr
+          && gimple_code (stmt) == GIMPLE_GOTO)
+    {
+      tree op = gimple_goto_dest (stmt);
+      if (TREE_CODE (op) == ADDR_EXPR)
+       ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
+    }
 
   return ret;
 }
index 84679bbbb6551345194d923ab742ca67b921a4f1..4d41fad6bd1ac7a3ca8590a20021997826469fd6 100644 (file)
@@ -1,5 +1,8 @@
 2013-08-16  Jakub Jelinek  <jakub@redhat.com>
 
+       PR tree-optimization/58164
+       * gcc.c-torture/compile/pr58164.c: New test.
+
        PR tree-optimization/58165
        * g++.dg/opt/pr58165.C: New test.
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr58164.c b/gcc/testsuite/gcc.c-torture/compile/pr58164.c
new file mode 100644 (file)
index 0000000..7fe24fa
--- /dev/null
@@ -0,0 +1,8 @@
+/* PR tree-optimization/58164 */
+
+int
+foo (void)
+{
+  int x = 0;
+  goto *&x;
+}