diff options
author | Paul Brook <paul@codesourcery.com> | 2007-07-23 11:16:47 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-07-23 11:16:47 +0000 |
commit | 228cc352898c5c7ee7da9fbea2eaeb8228d94da0 (patch) | |
tree | 72f0d782c33f4a5b6b5726e3bf9b02ca1f862869 | |
parent | b86e0fd4e3e18063c865f2921f6c3030204b31cc (diff) |
svn merge -r117055:117056 svn+ssh://gcc.gnu.org/svn/gcc/trunk/
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_1-branch@126839 138bc75d-0d04-0410-961f-82ee72b054a4
-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 4607adc484b..af61ab634c6 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. + 2007-07-16 Richard Guenther <rguenther@suse.de> Uros Bizjak <ubizjak@gmail.com> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a74d5139332..98f6d57f93f 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -15373,6 +15373,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 7f24a04d29c..6142ec58baa 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. + 2007-07-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * gcc.dg/c99-math-double-1.c: Mark test variables as volatile. 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 00000000000..5076dbd5049 --- /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); +} |