summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr51856.c23
4 files changed, 35 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 940e361fb7b..45bdc3d1aee 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-20 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ PR rtl-optimization/51856
+ * reload.c (find_reloads_subreg_address): Set the address_reloaded
+ flag to reloaded.
+
2012-01-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
PR target/51819
diff --git a/gcc/reload.c b/gcc/reload.c
index 90085bd33da..8420c808073 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -6231,8 +6231,8 @@ find_reloads_subreg_address (rtx x, int force_replace, int opnum,
}
}
}
- if (reloaded && address_reloaded)
- *address_reloaded = 1;
+ if (address_reloaded)
+ *address_reloaded = reloaded;
return x;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d0068ba0770..86ae60f117a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2012-01-20 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.c-torture/compile/pr51856.c: New testcase.
+
2012-01-20 Uros Bizjak <ubizjak@gmail.com>
* go.test/go-test.exp (go-gc-tests): Pass correctly formatted
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51856.c b/gcc/testsuite/gcc.c-torture/compile/pr51856.c
new file mode 100644
index 00000000000..6644c7fdc14
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51856.c
@@ -0,0 +1,23 @@
+struct B { int b1; long long b2, b3; int b4; };
+struct C { char c1[40], c2, c3[96]; long long c4[5], c5; char c6[596]; };
+void fn1 (long long), fn2 (char *, int), fn4 (void);
+int r, fn3 (int, const char *, int, char *, int, int);
+
+void
+foo (int t, int u, int v, int w, int x, int y, struct B *z)
+{
+ char c[512], d[512], e;
+ struct C g;
+ long long f, h[255];
+ struct B j;
+ __builtin_bzero (&j, sizeof j);
+ if (y > w)
+ fn4 ();
+ __builtin_bzero (&g, sizeof g);
+ g.c5 = h[0];
+ fn1 (z ? z->b3 : f);
+ g.c2 = y;
+ fn2 (d, 256);
+ if (fn3 (r, "", e, c, 0, 16))
+ fn4 ();
+}