------- Comment #24 from hjl dot tools at gmail dot com 2009-04-09 01:15
-------
Here is a testcase in C:
[...@gnu-6 pr39678]$ cat pr39678-2.c
struct Y { char c; };
struct X {
struct 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;
}
void abort (void);
float a[2] = { 3., -2. };
int main()
{
struct X x = foo(a);
if (__real x.val != 3.)
abort ();
if (__imag x.val != -2.)
abort ();
return 0;
}
[...@gnu-6 pr39678]$ gcc pr39678-2.c
[...@gnu-6 pr39678]$ ./a.out
Aborted
[...@gnu-6 pr39678]$
--
hjl dot tools at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|C++ empty struct is passed |complex type isn't passed
|incorrectly |correctly
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39678