> I think we need to update there in all cases. The reason we don't need to > update beyond i3 resp. undobuf.other_insn is that DF guarantees us that > there won't be debug insns referring to those pseudos afterwards, otherwise > either the pseudo must be live afterwards in real code (then it wouldn't > be a single use case), or debug insns would be reset, or a debug temporary > would be created, where the temporary is set before last place where > the pseudo is used in real code. Now, once we propagate_for_debug after > some insn, DF hasn't been run in between and thus the pseudos might be live > afterwards.
Frankly moving down last_combined_insn to undobuf.other_insn in the UNDO_MODE case seems a little overengineered at this point. > If you just want to avoid a global variable, the code can be surely changed > to have a local variable from combine_instructions and pass address to that > to all try_combine calls, but other than that I think we should do what the > patch does. I'd eliminate the global variable and directly pass the insn to try_combine, this is good enough for now IMO. -- Eric Botcazou