The attached source when compiled with -O2 and -ftree-vectorize aborts with a gcc internal compiler error. It aborts in expand_simple_binop which is given VEC_SELECT as the code to expand. Both GCC 4.1 and GCC 4.3 compiles this fine, and expand_simple_binop is not called for the VEC_SELECT case in 4.3.
Here is a debug trace: The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /data-gold1/fsf-build/gcc-4_2-branch/gcc/cc1 -O2 -ftree-vectorize bug.c vectorized_mult_vector_sign_int Analyzing compilation unitPerforming interprocedural optimizations Assembling functions: vectorized_mult_vector_sign_int Breakpoint 3, During symbol reading, incomplete CFI data; unspecified registers (e.g., rax) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rdx) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rcx) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rbx) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rsi) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rdi) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rbp) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r8) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r9) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r10) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r11) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r12) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r13) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r14) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r15) at 0x6a8437. expand_simple_binop (mode=DImode, code=PLUS, op0=0x2aaaaf76e540, op1=0x2aaaaf76e520, target=0x0, unsignedp=1, methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156 (gdb) c Continuing. Breakpoint 3, expand_simple_binop (mode=SImode, code=PLUS, op0=0x2aaaaf76e720, op1=0x2aaaaf76e700, target=0x0, unsignedp=1, methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156 (gdb) c Continuing. Breakpoint 3, expand_simple_binop (mode=V2SImode, code=VEC_SELECT, op0=0x2aaaaf777ae0, op1=0x2aaaaf76c640, target=0x0, unsignedp=1, methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156 (gdb) c Continuing. Breakpoint 1, fancy_abort (file=0x8eaf60 "/proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c", line=1157, function=0x8eaee0 "expand_simple_binop") at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/diagnostic.c:640 (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /data-gold1/fsf-build/gcc-4_2-branch/gcc/cc1 -O2 -ftree-vectorize bug.c vectorized_mult_vector_sign_int Analyzing compilation unitPerforming interprocedural optimizations Assembling functions: vectorized_mult_vector_sign_int Breakpoint 3, During symbol reading, incomplete CFI data; unspecified registers (e.g., rax) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rdx) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rcx) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rbx) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rsi) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rdi) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., rbp) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r8) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r9) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r10) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r11) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r12) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r13) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r14) at 0x6a8437. During symbol reading, incomplete CFI data; unspecified registers (e.g., r15) at 0x6a8437. expand_simple_binop (mode=DImode, code=PLUS, op0=0x2aaaaf76e540, op1=0x2aaaaf76e520, target=0x0, unsignedp=1, methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156 (gdb) c Continuing. Breakpoint 3, expand_simple_binop (mode=SImode, code=PLUS, op0=0x2aaaaf76e720, op1=0x2aaaaf76e700, target=0x0, unsignedp=1, methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156 (gdb) c Continuing. Breakpoint 3, expand_simple_binop (mode=V2SImode, code=VEC_SELECT, op0=0x2aaaaf777ae0, op1=0x2aaaaf76c640, target=0x0, unsignedp=1, methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156 (gdb) print op0 $4 = (rtx) 0x2aaaaf777ae0 (gdb) pr (reg:V4SI 87) (gdb) print op1 $5 = (rtx) 0x2aaaaf76c640 (gdb) pr (parallel [ (const_int 0 [0x0]) (const_int 2 [0x2]) ]) (gdb) print code $6 = VEC_SELECT (gdb) print binop $7 = (optab) 0x0 (gdb) whatis code_to_optab type = optab [125] (gdb) print/x code $8 = 0x0 (gdb) up #1 0x000000000055fa7d in force_operand (value=0x2aaaaf773660, target=0x0) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/expr.c:6084 -- Summary: -ftree-vectorize aborts on simple integer multiply vectorization Product: gcc Version: 4.2.4 Status: UNCONFIRMED Severity: normal Priority: P3 Component: regression AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: gnu at the-meissners dot org GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36039