aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/20161219.c30
-rw-r--r--gcc/tree-ssa-address.c2
4 files changed, 40 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 96f3c2e..540c2bd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
+ is const0_rtx.
+
2017-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/78997
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 053d2cf..14e24a8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2017-01-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * gcc.dg/20161219.c: New test.
+
2017-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/78997
diff --git a/gcc/testsuite/gcc.dg/20161219.c b/gcc/testsuite/gcc.dg/20161219.c
new file mode 100644
index 0000000..93ea8d2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20161219.c
@@ -0,0 +1,30 @@
+/* { dg-do assemble } */
+/* { dg-options "-O1 -w" } */
+
+static long long a[9];
+int b, c, d, e, g;
+
+static int
+fn1 (int *p1)
+{
+ b = 1;
+ for (; b >= 0; b--)
+ {
+ d = 0;
+ for (;; d++)
+ {
+ e && (a[d] = 0);
+ if (*p1)
+ break;
+ c = (int) a;
+ }
+ }
+ return 0;
+}
+
+int
+main ()
+{
+ int f = fn1 ((int *) f);
+ return f;
+}
diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c
index 3e3cad1..8d46a3e 100644
--- a/gcc/tree-ssa-address.c
+++ b/gcc/tree-ssa-address.c
@@ -115,7 +115,7 @@ gen_addr_rtx (machine_mode address_mode,
if (offset_p)
*offset_p = NULL;
- if (index)
+ if (index && index != const0_rtx)
{
act_elem = index;
if (step)