diff options
author | Greta Yorsh <greta.yorsh@arm.com> | 2013-05-02 16:45:10 +0100 |
---|---|---|
committer | Greta Yorsh <gretay@gcc.gnu.org> | 2013-05-02 16:45:10 +0100 |
commit | f3a81b39c05f955e6203ec1a61b517563d63314f (patch) | |
tree | c797c35837bf456d8287aae8dc7b794f073bda4c | |
parent | 7b920a9ac3fa4a0c8b281ba13f1e689e2c7da4ad (diff) | |
download | gcc-f3a81b39c05f955e6203ec1a61b517563d63314f.zip gcc-f3a81b39c05f955e6203ec1a61b517563d63314f.tar.gz gcc-f3a81b39c05f955e6203ec1a61b517563d63314f.tar.bz2 |
re PR rtl-optimization/56732 (ICE in advance_target_bb)
gcc/ChangeLog
2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com>
PR target/56732
* config/arm/arm.c (arm_expand_epilogue): Check really_return before
generating simple_return for naked functions.
gcc/testsuite/ChangeLog
2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com>
PR target/56732
* gcc.target/arm/pr56732-1.c: New test.
From-SVN: r198547
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr56732-1.c | 20 |
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5a3d466..cd257b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com> + + PR target/56732 + * config/arm/arm.c (arm_expand_epilogue): Check really_return before + generating simple_return for naked functions. + 2013-05-02 Martin Jambor <mjambor@suse.cz> PR middle-end/56988 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index bc42473..0b97cf8 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -24114,7 +24114,8 @@ arm_expand_epilogue (bool really_return) if (IS_NAKED (func_type) || (IS_VOLATILE (func_type) && TARGET_ABORT_NORETURN)) { - emit_jump_insn (simple_return_rtx); + if (really_return) + emit_jump_insn (simple_return_rtx); return; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1f345ff..28a1f43 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com> + + PR target/56732 + * gcc.target/arm/pr56732-1.c: New test. + 2013-05-02 Martin Jambor <mjambor@suse.cz> PR middle-end/56988 diff --git a/gcc/testsuite/gcc.target/arm/pr56732-1.c b/gcc/testsuite/gcc.target/arm/pr56732-1.c new file mode 100644 index 0000000..ac8b8cf --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr56732-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target naked_functions } */ +/* { dg-options "-O2 -Wall" } */ +extern void bar(); + +void __attribute__((__naked__)) +foo(void) +{ + bar (); +} + +int __attribute__((naked)) +zoo (int a, int b, int c, int d, int e, int f) +{ + bar (); + return e; +} +/* Verify that __attribute__((naked)) produces a naked function that + does not use bx to return. */ +/* { dg-final { scan-assembler-not "\tbx\tlr" } } */ |