This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Suggestion for a fix to Bug middle-end/20177


Mostafa Hagog wrote:
The question is: what is the correct fix for the longer term ?
is it enough to mark the SMSed block dirty? or do we need
also to keep the REG_DEAD correct in each basic-block
separately?

You either have to keep all REG_NOTES up to date, or call code that will recompute them. You can recompute REG_DEAD/REG_UNUSED notes by calling back into flow. This is presumably what happens when you mark the block dirty, so that would be a sufficient solution for REG_DEAD/REG_UNUSED.


See for instance code in combine.c that updates REG_NOTES after combination. This is in distribute_notes.

By the way, REG_UNUSED means that this instructions sets a register, and this value dies here. There are no uses of this register before the next set or the end of the function. Thus it holds register life info that is complimentary to REG_DEAD.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]