aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-02 11:26:25 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-02 11:26:25 +0000
commitef65f502c2b914c6e28124d11e849bf5c4043a02 (patch)
treea6b0306f24d49535f1b32ea2629ba24afb2182e4
parent54b24175307f1c0c476a378eee650dd0de120107 (diff)
2017-05-02 Richard Biener <rguenther@suse.de>
PR tree-optimization/80591 Revert 2017-04-10 Richard Biener <rguenther@suse.de> * tree-ssa-structalias.c (find_func_aliases): Properly handle asm inputs. * gcc.dg/torture/pr80591.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@247487 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr80591.c20
-rw-r--r--gcc/tree-ssa-structalias.c4
4 files changed, 36 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e1178f3e749..166155645cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2017-05-02 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80591
+ Revert
+ 2017-04-10 Richard Biener <rguenther@suse.de>
+
+ * tree-ssa-structalias.c (find_func_aliases): Properly handle
+ asm inputs.
+
2017-04-28 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/80531
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8a2adad57af..092574b204b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-05-02 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80591
+ * gcc.dg/torture/pr80591.c: New testcase.
+
2017-04-27 Jakub Jelinek <jakub@redhat.com>
PR c++/80534
diff --git a/gcc/testsuite/gcc.dg/torture/pr80591.c b/gcc/testsuite/gcc.dg/torture/pr80591.c
new file mode 100644
index 00000000000..5958474bdf2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr80591.c
@@ -0,0 +1,20 @@
+/* PR tree-optimization/80591 */
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } "-flto" } */
+/* { dg-additional-options "-fdump-tree-optimized" } */
+
+static inline __attribute__((always_inline)) int *
+foo (void)
+{
+ __UINTPTR_TYPE__ sp;
+ asm ("" : "=r" (sp));
+ return (int *) sp;
+}
+
+void
+bar (void)
+{
+ foo ()[0] += 26;
+}
+
+/* { dg-final { scan-tree-dump "\\+ 26;" "optimized" } } */
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 77736f51153..aab6821e792 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -4944,14 +4944,14 @@ find_func_aliases (struct function *fn, gimple *origt)
make_escape_constraint (build_fold_addr_expr (op));
/* The asm may read global memory, so outputs may point to
- any global or escaped memory. */
+ any global memory. */
if (op)
{
auto_vec<ce_s, 2> lhsc;
struct constraint_expr rhsc, *lhsp;
unsigned j;
get_constraint_for (op, &lhsc);
- rhsc.var = escaped_id;
+ rhsc.var = nonlocal_id;
rhsc.offset = 0;
rhsc.type = SCALAR;
FOR_EACH_VEC_ELT (lhsc, j, lhsp)