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

Reply via email to