The attached file compiles correctly with GCC versions 3.0.4 and 3.2.3;
however, incorrect output is produced with GCC 3.3 and the mainline
The problem goes away when optimizations are disabled. This problem does not
occur on other targets, e.g. i686.
Created attachment 4584 [details]
Compile with this command: "gcc -c -O2 Test.cpp -marm -save-temps"
The output file Test.s should contain three "smull" instructions and six
"smlal" instructions. However, with GCC 3.3 and later the generated code is
incorrect, e.g. there is only one "smull" instruction and two "smlal"
Your code contains lots of aliasing violations, which are the cause for your
problems. I suggest you fix them or use -fno-strict-aliasing.
Reopening to ...
Mark as a dup of bug 21920.
*** This bug has been marked as a duplicate of 21920 ***