On 07/11/11 18:42, Bernd Schmidt wrote: > On 07/11/11 18:12, Georg-Johann Lay wrote: >> The reason is that IRA (or reload, don't see it from the dumps) >> combines the insns again to: >> >> (insn 29 31 24 2 (parallel [ >> (set (reg:HI 24 r24 [49]) >> (mult:HI (reg:HI 18 r18) >> (const_int 15 [0xf]))) >> (clobber (reg:QI 20 r20)) >> ]) wmul.c:71 46 {*mulhi3.uconst} >> (nil)) > > Find out where it does that (breakpoint on make_insn_raw if the insn is > newly created; watchpoint on its PATTERN (insn->u.fld[4].rt_rtx I think) > otherwise.
Ok, so I'm guessing it's the validate_replace_rtx call in update_equiv_regs. If I understand correctly, you're doing this to get the constant CSEd - is that right? If so, have you tried using an expander rather than a split (no CSE passes after combine)? Bernd