------- Comment #12 from dougkwan at google dot com 2009-05-10 00:56 ------- Created an attachment (id=17840) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17840&action=view) C test-case for the same problem on x86_64 and i386.
The original C++ test-case does not crash on x86_64 and i386. I compared the generated code and found that ARM EABI requires constructors to return values. That is not common and certainly is not the case on x86_64 and i386. So gcc generates very different code on both targert very early on. The C test-case was created based on the lowered C++ code in the middle-end. It crashes with just -O2 on x86_64 with both 4.3.1 and 4.4.0; it crashes on i386 similarly with 4.3.1. I did not test 4.4.0 on i386. Unfortunately this does not crash on ARM. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39604