------- Comment #21 from rguenth at gcc dot gnu dot org 2009-04-08 08:39
-------
Ah, the key is the complex type! Thus, the following testcase "works"
struct Y {};
struct X {
Y y;
__complex__ float val;
};
struct X __attribute__((noinline))
foo (float *p)
{
struct X x;
__real x.val = p[0];
__imag x.val = p[1];
return x;
}
extern "C" void abort (void);
int main()
{
float a[2] = { 1., 2. };
struct X x = foo(a);
if (__real x.val != 1.
|| __imag x.val != 2.)
abort ();
return 0;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39678