diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/asm-function-2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/asm-function-2.C | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/asm-function-2.C b/gcc/testsuite/g++.dg/asm-function-2.C new file mode 100644 index 00000000000..87f46a6b787 --- /dev/null +++ b/gcc/testsuite/g++.dg/asm-function-2.C @@ -0,0 +1,75 @@ +/* APPLE LOCAL file CW asm blocks */ +/* Test whole asm functions. */ + +/* { dg-do run { target powerpc*-*-darwin* } } */ +/* { dg-options "-fasm-blocks -O2" } */ + +extern "C" void abort(void); + +asm void normal_fn () +{ + nop + nop +} + +asm void nofralloc_fn () +{ + nofralloc + nop + blr +} + +asm void fralloc_fn () +{ + fralloc + nop + nop +} + +asm int fralloc_fn_1 () +{ + fralloc + mr r4,r1 + frfree + sub r3,r4,r1 + blr +} + +asm int fralloc_fn_2 () +{ + fralloc 1000 + nop + frfree + blr +} + +asm int fralloc_fn_3 () +{ + int loc1, loc2; + fralloc 41 + nop + mr r3, loc2 + frfree + mr r3, loc1 + blr +} + +asm int f6 () +{ + opword 0x386004d2 /* li r3,1234 */ +} + +main() +{ + normal_fn (); + nofralloc_fn (); + fralloc_fn (); + /* + fralloc_fn_1 (); + fralloc_fn_2 (); + fralloc_fn_3 (); + */ + if (f6 () != 1234) + abort (); + return 0; +} |