diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-12-04 22:55:32 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2007-12-04 22:55:32 +0100 |
commit | b9f9b2101b2c22a613477fcf34afcccb5e5f82dd (patch) | |
tree | 0663723ee3fa06bbc6a609cb2b720faa59068a47 | |
parent | ba7963084ebe2ee2302c97a2aa70d919516311a3 (diff) | |
download | gcc-b9f9b2101b2c22a613477fcf34afcccb5e5f82dd.zip gcc-b9f9b2101b2c22a613477fcf34afcccb5e5f82dd.tar.gz gcc-b9f9b2101b2c22a613477fcf34afcccb5e5f82dd.tar.bz2 |
re PR middle-end/34134 (ICE when using __builtin_stack_restore)
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.
From-SVN: r130609
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/stmt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20071117-1.c | 13 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a7eb6a2..050bc68 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... @@ -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 5407e15..f903d83 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 0000000..efcd512 --- /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; +} |