diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-12-06 18:15:11 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-12-06 18:15:11 +0100 |
commit | 762f7770391d32e935cf30f05aa0624bb1be870d (patch) | |
tree | 233c5dda2b7c4ec2bd6258e1cd95664614a37157 | |
parent | 66403b386261d5c849ce3d89eab726f53d43a1b0 (diff) | |
download | gcc-762f7770391d32e935cf30f05aa0624bb1be870d.zip gcc-762f7770391d32e935cf30f05aa0624bb1be870d.tar.gz gcc-762f7770391d32e935cf30f05aa0624bb1be870d.tar.bz2 |
re PR target/51354 (ICE in maybe_record_trace_start)
PR target/51354
* config/i386/i386.c (ix86_emit_leave): Call ix86_add_cfa_restore_note
unconditionally.
* gcc.c-torture/compile/pr51354.c: New test.
From-SVN: r182056
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr51354.c | 17 |
4 files changed, 30 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c74afa9..9a22496 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-12-06 Jakub Jelinek <jakub@redhat.com> + + PR target/51354 + * config/i386/i386.c (ix86_emit_leave): Call ix86_add_cfa_restore_note + unconditionally. + 2011-12-06 Georg-Johann Lay <avr@gjlay.de> Forward-port from gcc-4_6-branch r181936 2011-12-02. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1b871be..1638799 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -10545,9 +10545,9 @@ ix86_emit_leave (void) add_reg_note (insn, REG_CFA_DEF_CFA, plus_constant (stack_pointer_rtx, m->fs.sp_offset)); RTX_FRAME_RELATED_P (insn) = 1; - ix86_add_cfa_restore_note (insn, hard_frame_pointer_rtx, - m->fs.fp_offset); } + ix86_add_cfa_restore_note (insn, hard_frame_pointer_rtx, + m->fs.fp_offset); } /* Emit code to restore saved registers using MOV insns. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac537cf..0472974 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-06 Jakub Jelinek <jakub@redhat.com> + + PR target/51354 + * gcc.c-torture/compile/pr51354.c: New test. + 2011-12-06 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51431 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51354.c b/gcc/testsuite/gcc.c-torture/compile/pr51354.c new file mode 100644 index 0000000..5b2abb0 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr51354.c @@ -0,0 +1,17 @@ +/* PR target/51354 */ + +extern void abort (void); + +typedef int __attribute__ ((aligned (32))) ai; + +void foo (int *x, ai * y); + +int +bar (int x) +{ + if (x == 12346) + return 24; + ai i; + foo (__builtin_alloca (x), &i); + return 128; +} |