diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2003-11-02 09:27:23 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2003-11-02 08:27:23 +0000 |
commit | 0a9e65f99932bf26e1b6fe2cab23f939eeba37bc (patch) | |
tree | 0a4c104db7dd99dad262566d59e7aff0eaaf2bfb /gcc/testsuite | |
parent | f25b19304b2f2978a7c6a4f33d1c19c29ae5c897 (diff) | |
download | gcc-0a9e65f99932bf26e1b6fe2cab23f939eeba37bc.zip gcc-0a9e65f99932bf26e1b6fe2cab23f939eeba37bc.tar.gz gcc-0a9e65f99932bf26e1b6fe2cab23f939eeba37bc.tar.bz2 |
sparc.c (function_arg_partial_nregs): Return 0 for all complex modes whose size is lesser or equal to a word.
* config/sparc/sparc.c (function_arg_partial_nregs) [TARGET_ARCH64]:
Return 0 for all complex modes whose size is lesser or equal to
a word. Add a ??? comment for the condition used with 16-byte
aligned modes.
From-SVN: r73194
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/complex-1.c | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 891ec33..599563b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-11-02 Eric Botcazou <ebotcazou@libertysurf.fr> + + * gcc.dg/complex-1.c: New test. + 2003-11-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> PR c++/12796 diff --git a/gcc/testsuite/gcc.dg/complex-1.c b/gcc/testsuite/gcc.dg/complex-1.c new file mode 100644 index 0000000..7153433 --- /dev/null +++ b/gcc/testsuite/gcc.dg/complex-1.c @@ -0,0 +1,31 @@ +/* { dg-do run } */ +/* { dg-options "-O" } */ + +/* Verify that the 6th complex floating-point argument is + correctly passed as unnamed argument on SPARC64. */ + +extern void abort(void); + +void foo(long arg1, long arg2, long arg3, long arg4, long arg5, ...) +{ + __builtin_va_list ap; + _Complex float cf; + + __builtin_va_start(ap, arg5); + cf = __builtin_va_arg(ap, _Complex float); + __builtin_va_end(ap); + + if (__imag__ cf != 2.0f) + abort(); +} + +int bar(long arg1, long arg2, long arg3, long arg4, long arg5, _Complex float arg6) +{ + foo(arg1, arg2, arg3, arg4, arg5, arg6); + return 0; +} + +int main(void) +{ + return bar(0, 0, 0, 0, 0, 2.0fi); +} |