> I don't think this is not the right fix for the problem. GCSE doesn't handle > expressions containing hard registers, oprs_unchanged_p should never even > see expressions involving hard registers.
I was afraid of this one. > > What is the expression that is recorded as anticipated in insn 38? Is it > "mho:SI > 0>>0x3" or "udiv(r159:SI,0xa)" from the REG_EQUAL note? > Instruction 38. As far as I can see, a solution is to use a split pattern after register allocation to describe the multiplication (now it is done in the expand). Another one, is to force the gcse to check the regnotes (REG_EQUAL) rather than the instruction itself. Best, Claudiu