From Bugzilla Helper: User-Agent: Opera/8.50 (Windows NT 5.1; U; en) Description of problem: Incorrect actual parameter to asm("movups") crashes compiler. Version-Release number of selected component (if applicable): gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1) How reproducible: Always Steps to Reproduce: 1.gcc4 -msse3 gcc_zomplex_movups_bug.c 2. 3. Actual Results: gcc_zomplex_movups_bug.c: In function ?MPI_op_scalar_zmplx_sum?: gcc_zomplex_movups_bug.c:24: internal compiler error: in emit_move_insn, at expr.c:3026 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. Preprocessed source stored into /tmp/cckzhovQ.out file, please attach this to your bugreport. Expected Results: An error message from compiler telling me that I use incorrect actual parameter to the movups instruction. Additional info: The whole scenario stems from the fact that load/store of vector variables assumes perfect alignment. Since there is no way to tell gcc that the address to a vector variable is misaligned, and hence gcc should emit movups instead of movaps, the programmer must explicit check for alignment and use inline assembly to generate movups. I have submittet a "bug report" http://gcc.gnu.org/bugzilla/show_bug.cgi? id=20982 on the issue. In my opinion, there should be a way to specify alignment of vector variables. By allowing __atrribute__ ((aligned)) to specify alignment down to the basic type is an idea.
*** This bug has been marked as a duplicate of 171874 ***