------- Comment #4 from rask at gcc dot gnu dot org 2007-11-14 19:10 ------- For f(), combine wants a pattern to match
(set (reg:DI 76) (sign_extend:DI (subreg:SI (plus:DI (subreg:DI (mult:SI (reg:SI 16 $16 [ x ]) (const_int 4 [0x4])) 0) (reg:DI 17 $17 [ y ])) 0))) but the closest one is (define_insn "*saddl_se" [(set (match_operand:DI 0 "register_operand" "=r,r") (sign_extend:DI (plus:SI (mult:SI (match_operand:SI 1 "reg_not_elim_operand" "r,r") (match_operand:SI 2 "const48_operand" "I,I")) (match_operand:SI 3 "sext_add_operand" "rI,O"))))] and similarily for g() where the "*ssubl_se" pattern doesn't match. I wonder where the (subreg:DI (mult:SI ...)) part comes from. That can't be right. -- rask at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rask at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Known to fail| |4.3.0 Last reconfirmed|2005-09-07 17:37:27 |2007-11-14 19:10:09 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8603