diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/opt/conj1.C')
-rw-r--r-- | gcc/testsuite/g++.dg/opt/conj1.C | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/conj1.C b/gcc/testsuite/g++.dg/opt/conj1.C new file mode 100644 index 000000000..b578abbdf --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/conj1.C @@ -0,0 +1,18 @@ +// PR target/5740 +// This testcase ICEd on SPARC -m64 because emit_group_load tried +// to move a DFmode register into DImode register directly. +// { dg-do compile } +// { dg-options "-O2" } + +struct C +{ + C (double y, double z) { __real__ x = y; __imag__ x = z; } + double r () const { return __real__ x; } + double i () const { return __imag__ x; } + __complex__ double x; +}; + +C conj (const C& z) +{ + return C (z.r (), -z.i ()); +} |