diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2008-05-25 14:01:19 +0000 |
---|---|---|
committer | H.J. Lu <hongjiu.lu@intel.com> | 2008-05-25 14:01:19 +0000 |
commit | faa5e5553b7273581a0bbc53cce0ab242e48214a (patch) | |
tree | 0f86bf5b068dddaeb8a9c3c4d8fe3ab13e968df4 /gcc/testsuite/gcc.target | |
parent | 2794e727392133eb0744c4712024a235d4aa8b96 (diff) |
Merged with trunk at revision 135858.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/stack@135866 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r-- | gcc/testsuite/gcc.target/arm/naked-1.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/naked-2.c | 12 |
2 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/naked-1.c b/gcc/testsuite/gcc.target/arm/naked-1.c new file mode 100644 index 00000000000..8f9ff711a5e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/naked-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O0" } */ +/* Check that function arguments aren't assigned and copied to stack slots + in naked functions. This ususally happens at -O0 (presumably for + better debugging), but is highly undesirable if we haven't created + a stack frame. */ +void __attribute__((naked)) +foo(int n) +{ + __asm__ volatile ("frob r0\n"); +} +/* { dg-final { scan-assembler "\tfrob r0" } } */ +/* { dg-final { scan-assembler-not "\tstr" } } */ diff --git a/gcc/testsuite/gcc.target/arm/naked-2.c b/gcc/testsuite/gcc.target/arm/naked-2.c new file mode 100644 index 00000000000..92e7db4447d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/naked-2.c @@ -0,0 +1,12 @@ +/* Verify that __attribute__((naked)) produces a naked function + that does not use bx to return. Naked functions could be used + to implement interrupt routines and must not return using bx. */ +/* { dg-do compile } */ +/* { dg-options "-O0" } */ +/* Use more arguments than we have argument registers. */ +int __attribute__((naked)) foo(int a, int b, int c, int d, int e, int f) +{ + __asm__ volatile ("@ naked"); +} +/* { dg-final { scan-assembler "\t@ naked" } } */ +/* { dg-final { scan-assembler-not "\tbx\tlr" } } */ |