diff options
Diffstat (limited to 'gcc/testsuite/gcc.apple/asm-function-5.c')
-rw-r--r-- | gcc/testsuite/gcc.apple/asm-function-5.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.apple/asm-function-5.c b/gcc/testsuite/gcc.apple/asm-function-5.c new file mode 100644 index 00000000000..7808daaa81b --- /dev/null +++ b/gcc/testsuite/gcc.apple/asm-function-5.c @@ -0,0 +1,49 @@ +/* APPLE LOCAL file CW asm blocks */ +/* Test function calls in asm functions. */ + +/* { dg-do run { target powerpc*-*-* } } */ +/* { dg-options "-fasm-blocks -O2" } */ + +void abort(void); + +int glob = 0; + +int other (); +int stubfn (); +int localfn () { return other (); } + +asm void foo(int arg) +{ + nofralloc + mflr r0 + stmw r30,-8(r1) + stw r0,8(r1) + stwu r1,-80(r1) + bl stubfn + /* bl L_stubfn$stub */ + lwz r0,88(r1) + addi r1,r1,80 + mtlr r0 + lmw r30,-8(r1) + b localfn +} + +void bar (int arg) +{ + stubfn (); + localfn (); +} + +int stubfn () { return other(); } + +int other () { return ++glob; } + +int main () +{ + bar(34); + foo(92); + if (glob != 4) + abort (); + return 0; +} + |