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

Reply via email to