Thanks for the input and the questions
Did you examine: long long l, k; l = -k; for correctness by itself? Was it valid or invalid?
Yes this is working.
[ read ahead for spoilers, I'd rather you pull this information out of the dump and present it to us... ] A quick glance at the rtl shows that insn 95 tries to use [a4+4] but insn 94 clobbered a4 already, also d3 is used by insn 93, but there isn't a set for it.
Looks like you have found out the problem.But i need to look more into it.
The way the instructions are numbered suggests that the code went wrong before this point. You have to read and understand all the
The instructions are numbered randomly and not in the increasing order ... But looking at the diff of working and non working code i thought it was not an issue. Is this natural ? Those are ids for insns and each insns have unique id. Is it wrong to the the insns ids to be in jumbled fashion. and one more thing. In the dumps i noticed that before using a register in DI mode they are all clobbred first, like (insn 30 54 28 6 (clobber (reg:DI 34)) -1 (nil) (nil)) What is the use of this insns ... Why do we need to clobber these registers befor the use? After some pass they are not seen in the dump. Regards, Shafi.