------- Comment #10 from ubizjak at gmail dot com 2008-11-16 20:58 ------- Real bug with argument passing. Confirmed on x86_64-linux-gnu with the testcase:
--cut here-- struct S2848 { unsigned int a; _Complex int b; }; struct S2848 s2848; void __attribute__((noinline)) check2848 (struct S2848 arg0) { if (arg0.b != s2848.b) abort (); } int main() { s2848.a = 4027477739U; s2848.b = (723419448 + -218144346 * __extension__ 1i); check2848 (s2848); return 0; } --cut here-- > gcc -O2 t.c > ./a.out Aborted -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hjl at gcc dot gnu dot org, | |hubicka at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 GCC host triplet|i686-apple-darwin9 | GCC target triplet|i686-apple-darwin9 |x86_64 Keywords| |ABI, wrong-code Known to fail| |4.3.0 4.4.0 Last reconfirmed|0000-00-00 00:00:00 |2008-11-16 20:58:10 date| | Summary|tmpdir-gcc.dg-struct-layout-|structures with _Complex |1/t028 failure at -m64 on |arguments are not passed |i686-apple-darwin9 |correctly http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38151