summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-04 21:55:32 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-04 21:55:32 +0000
commitb71f72d7e2bfaac7cf383a8857e53ad3cd0e038b (patch)
tree0663723ee3fa06bbc6a609cb2b720faa59068a47
parent0423517abe1d5074de61fb5b6f3f4985b8b7b587 (diff)
downloadppe42-gcc-b71f72d7e2bfaac7cf383a8857e53ad3cd0e038b.tar.gz
ppe42-gcc-b71f72d7e2bfaac7cf383a8857e53ad3cd0e038b.zip
PR middle-end/34134
* stmt.c (expand_stack_restore): Call expand_normal on var to get rtx for it instead of assuming it will be a VAR_DECL. * gcc.c-torture/compile/20071117-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130609 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/stmt.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20071117-1.c13
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a7eb6a2847b..050bc681c8b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/34134
+ * stmt.c (expand_stack_restore): Call expand_normal on var to get
+ rtx for it instead of assuming it will be a VAR_DECL.
+
2007-12-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* c-parser (c_parser_statement_after_labels): Move error from here...
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 7d1a2662507..aacb1840dec 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1995,7 +1995,7 @@ expand_stack_save (void)
void
expand_stack_restore (tree var)
{
- rtx sa = DECL_RTL (var);
+ rtx sa = expand_normal (var);
emit_stack_restore (SAVE_BLOCK, sa, NULL_RTX);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5407e15f645..f903d83a8cb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/34134
+ * gcc.c-torture/compile/20071117-1.c: New test.
+
2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
PR c++/34101
diff --git a/gcc/testsuite/gcc.c-torture/compile/20071117-1.c b/gcc/testsuite/gcc.c-torture/compile/20071117-1.c
new file mode 100644
index 00000000000..efcd51269ba
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20071117-1.c
@@ -0,0 +1,13 @@
+/* PR middle-end/34134 */
+
+extern void bar (void *, int);
+
+int foo (int i)
+{
+ char *p = __builtin_stack_save ();
+ void *q = __builtin_alloca (i);
+ bar (q, i);
+ __builtin_stack_restore (p);
+ bar ("", 0);
+ return 6;
+}
OpenPOWER on IntegriCloud