On Fri, May 11, 2007 at 01:54:24PM +0200, Roman Zippel wrote: > > To illustrate the problem here is what happens during combine: > > -(insn 7 28 8 2 ../gcc/gcc/testsuite/gcc.c-torture/execute/20001108-1.c:4 > (parallel [ > - (set (subreg:SI (reg:DI 30 [ D.1547 ]) 4) > - (mult:SI (reg/v:SI 33 [ x ]) > - (subreg:SI (reg/v:DI 32 [ sum ]) 4))) > - (set (subreg:SI (reg:DI 30 [ D.1547 ]) 0) > - (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (reg/v:SI > 33 [ x ])) > - (sign_extend:DI (subreg:SI (reg/v:DI 32 [ sum ]) > 4))) > - (const_int 32 [0x20])))) > - ]) 182 {*m68k.md:2733} (expr_list:REG_DEAD (reg/v:SI 33 [ x ]) > - (expr_list:REG_UNUSED (reg:DI 30 [ D.1547 ]) > - (nil)))) > +(insn 7 28 8 2 ../gcc/gcc/testsuite/gcc.c-torture/execute/20001108-1.c:4 > (set (subreg:SI (reg:DI 30 [ D.1547 ]) 4) > + (mult:SI (mem/c/i:SI (plus:SI (reg/f:SI 24 %argptr) > + (const_int 16 [0x10])) [3 x+0 S4 A32]) > + (subreg:SI (reg/v:DI 32 [ sum ]) 4))) 176 {*m68k.md:2643} > (expr_list:REG_UNUSED (reg:DI 30 [ D.1547 ]) > + (nil)))
The first one is the insn pattern right below the mulsidi3 expander, right? Please give all insn patterns a name to make searches easier. May I ask why the original insn 7 isn't coded something like (set (reg:DI 30) (mult:DI (sign_extend:DI (reg:SI 33)) (sign_extend:DI (reg:SI 32)))) instead? -- Rask Ingemann Lambertsen