------- Comment #4 from steven at gcc dot gnu dot org  2006-02-24 20:48 -------
I'm not sure how to fix this.  The debug trace here says it all: We try to
force something into an operand using an optab with a mode for which we have no
handler:

Starting program: /home/steven/devel/build-trunk/gcc/cc1 -m32 -std=c99 -O1
-ftree-vectorize -march=pentium4 t.c
 matmul_i4
Analyzing compilation unitPerforming intraprocedural optimizations
Assembling functions:
 matmul_i4
Breakpoint 3, move_invariant_reg (loop=0xd3f1d0, invno=0) at
loop-invariant.c:1162
1162              op = force_operand (SET_SRC (set), reg);
(gdb) p debug_rtx(inv->insn)
(insn 82 81 143 10 (set (subreg:TI (reg:V4SI 98) 0)
        (lshiftrt:TI (subreg:TI (reg:V4SI 71 [ vect_cst_.47 ]) 0)
            (const_int 32 [0x20]))) -1 (nil)
    (nil))
$36 = void
(gdb) p debug_rtx(set)
(set (subreg:TI (reg:V4SI 98) 0)
    (lshiftrt:TI (subreg:TI (reg:V4SI 71 [ vect_cst_.47 ]) 0)
        (const_int 32 [0x20])))
$37 = void
(gdb) step
force_operand (value=0x2aaaab009cc0, target=0x2aaaab00e500) at expr.c:5793
5793      rtx subtarget = get_subtarget (target);
(gdb) b 5888
Breakpoint 4 at 0x5ceb64: file expr.c, line 5888.
(gdb) cont
Continuing.

Breakpoint 4, force_operand (value=0x2aaaab009cc0, target=0x2aaaab00e500)
    at expr.c:5888
5888              return expand_simple_binop (GET_MODE (value), code, op1, op2,
(gdb) p debug_rtx(op1)
(subreg:TI (reg:V4SI 71 [ vect_cst_.47 ]) 0)
$38 = void
(gdb) p debug_rtx(op2)
(const_int 32 [0x20])
$39 = void
(gdb) p code
$40 = LSHIFTRT
(gdb) step
expand_simple_binop (mode=TImode, code=LSHIFTRT, op0=0x2aaaab009c80,
    op1=0x2aaaaadf5600, target=0x2aaaab00e500, unsignedp=1,
methods=OPTAB_LIB_WIDEN)
    at optabs.c:1154
1154      optab binop = code_to_optab[(int) code];
(gdb) next
1157      return expand_binop (mode, binop, op0, op1, target, unsignedp,
methods);
(gdb) p *binop
$41 = {code = LSHIFTRT, handlers = {{insn_code = CODE_FOR_nothing, libfunc =
0x0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0}, {insn_code =
CODE_FOR_nothing,
      libfunc = 0x0}, {insn_code = CODE_FOR_nothing, libfunc = 0x0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0}, {insn_code =
CODE_FOR_nothing,
      libfunc = 0x0}, {insn_code = CODE_FOR_nothing, libfunc = 0x0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0}, {insn_code =
CODE_FOR_nothing,
      libfunc = 0x0}, {insn_code = CODE_FOR_nothing, libfunc = 0x0}, {
      insn_code = CODE_FOR_lshrqi3, libfunc = 0x0}, {insn_code =
CODE_FOR_lshrhi3,
      libfunc = 0x0}, {insn_code = CODE_FOR_lshrsi3, libfunc = 0x2aaaaaf88960},
{
      insn_code = CODE_FOR_lshrdi3, libfunc = 0x2aaaaaf889a0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0} <repeats 23 times>, {
      insn_code = CODE_FOR_lshrv8hi3, libfunc = 0x0}, {insn_code =
CODE_FOR_lshrv4si3,
      libfunc = 0x0}, {insn_code = CODE_FOR_lshrv2di3, libfunc = 0x0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0}, {insn_code =
CODE_FOR_nothing,
      libfunc = 0x0}, {insn_code = CODE_FOR_nothing, libfunc = 0x0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0}, {insn_code =
CODE_FOR_nothing,
      libfunc = 0x0}, {insn_code = CODE_FOR_nothing, libfunc = 0x0}, {
      insn_code = CODE_FOR_nothing, libfunc = 0x0}, {insn_code =
CODE_FOR_nothing,
      libfunc = 0x0}, {insn_code = CODE_FOR_nothing, libfunc = 0x0}}}
(gdb)  


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.2.0                       |---


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26449

Reply via email to