/* Verify that rtl expansion cleanup doesn't get too aggressive about | |
code dealing with complex CONCATs. */ | |
/* { dg-do run } */ | |
/* { dg-options "-O -fno-tree-sra" } */ | |
extern void abort (void); | |
extern void exit (int); | |
__complex__ float foo (void) | |
{ | |
__complex__ float f[1]; | |
__real__ f[0] = 1; | |
__imag__ f[0] = 1; | |
f[0] = __builtin_conjf (f[0]); | |
return f[0]; | |
} | |
int main (void) | |
{ | |
__complex__ double d[1]; | |
d[0] = foo (); | |
if (__real__ d[0] != 1 || __imag__ d[0] != -1) | |
abort (); | |
exit (0); | |
} |