This is the mail archive of the gcc-patches@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]

Re: Local update flow info assumes valid situations are illegal


On Jan  3, 2001, Richard Henderson <rth@redhat.com> wrote:

>> * flow.c (verify_local_live_at_start): Don't die if a register
>> dead at the end of a BB becomes dead at the head.

> Absolutely not!  All attempts to weaken the test this
> function performs will be met with fierce resistance.

Ok.  That's good to know.  I was under the impression optimizations
weren't required to keep local flow information accurate, since it
would be fixed later anyway.

> As you stated yourself, the problems are elsewhere.
> Get elsewhere to fix up flow information itself by
> invoking update_life_info with UPDATE_LIFE_GLOBAL,
> or whatever is necessary to keep things straight.

Ok.

> So why doesn't this existing code in combine [snip] trigger?

It does trigger for the insn with the add, but not for the insn that
originally set the register, that was also optimized away.  We had
something like:

        [ live registers: ... B ... ]
(set (reg A) (reg B))
(set (reg C) (minus (reg A) (reg A))) REG_DEAD A

Note that there wasn't any REG_DEAD note for B in the first set, even
though B was indeed dead.  Does it make any difference the fact that B
is not a pseudo (even though it's not a real hardware register
either), but an must-be-eliminated fixed call-clobbered register?

>> In other cases, a fixed hardware register was not used at all before
>> some split introduced uses thereof; in this case, the register ended
>> up live in the beginning of the block, even though it was dead at the end.

> Hmm.  Trickier.  During what pass is the split invoked?

I don't recall for sure.  Matt Hiller had the testcase.  Matt, would
you please send it to me (again?) in private?  Thanks in advance!

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

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