diff options
author | Paul Brook <paul@codesourcery.com> | 2006-09-19 13:19:24 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2006-09-19 13:19:24 +0000 |
commit | 758ed9b25fa9d4bd8ae56ee4e67f1d3e4f6ac10d (patch) | |
tree | b1f2569dbeec472f3edfbd1809d421e207699234 | |
parent | dc6c77143217f9856b334ca80dfaeccae99ed790 (diff) | |
download | gcc-758ed9b25fa9d4bd8ae56ee4e67f1d3e4f6ac10d.zip gcc-758ed9b25fa9d4bd8ae56ee4e67f1d3e4f6ac10d.tar.gz gcc-758ed9b25fa9d4bd8ae56ee4e67f1d3e4f6ac10d.tar.bz2 |
re PR target/28516 (arm_unwind_emit_set, at config/arm/arm.c:15419 with -fexceptions)
2006-09-19 Paul Brook <paul@codesourcery.com>
PR target/28516
gcc/
* config/arm/arm.c (arm_unwind_emit_set): Handle reg = sp + const.
gcc/testsuite/
* gcc.dg/nested-func-5.c: New test.
From-SVN: r117056
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/nested-func-5.c | 13 |
4 files changed, 32 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 515e4f9..030f172 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-09-19 Paul Brook <paul@codesourcery.com> + + PR target/28516 + * config/arm/arm.c (arm_unwind_emit_set): Handle reg = sp + const. + 2006-09-17 Zdenek Dvorak <dvorakz@suse.cz> PR tree-optimization/28887 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a36c0d7..ff5831f 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -15415,6 +15415,15 @@ arm_unwind_emit_set (FILE * asm_out_file, rtx p) /* Move from sp to reg. */ asm_fprintf (asm_out_file, "\t.movsp %r\n", REGNO (e0)); } + else if (GET_CODE (e1) == PLUS + && GET_CODE (XEXP (e1, 0)) == REG + && REGNO (XEXP (e1, 0)) == SP_REGNUM + && GET_CODE (XEXP (e1, 1)) == CONST_INT) + { + /* Set reg to offset from sp. */ + asm_fprintf (asm_out_file, "\t.movsp %r, #%d\n", + REGNO (e0), (int)INTVAL(XEXP (e1, 1))); + } else abort (); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f5d9a7a..e643d1d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-09-19 Paul Brook <paul@codesourcery.com> + + PR target/28516 + * gcc.dg/nested-func-5.c: New test. + 2006-09-19 Ben Elliston <bje@au.ibm.com> * lib/target-supports.exp (check_effective_target_tls): Compile diff --git a/gcc/testsuite/gcc.dg/nested-func-5.c b/gcc/testsuite/gcc.dg/nested-func-5.c new file mode 100644 index 0000000..5076dbd --- /dev/null +++ b/gcc/testsuite/gcc.dg/nested-func-5.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-fexceptions" } */ +/* PR28516: ICE generating ARM unwind directives for nested functions. */ + +void ex(int (*)(void)); +void foo(int i) +{ + int bar(void) + { + return i; + } + ex(bar); +} |