http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43491

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
As said, the fix in comment #6 isn't really effective and I intend to basically
revert it.

But I'd like to have guidance on what transforms people think are ok for
global register vars - esp. what is "true redundancy elimination"?  Any
redundancy elimination can cause the extension of the lifetime of the
temporaries we create and thus increase register pressure.

Ideally we'd treat global register variables by rewriting them into SSA
form but avoiding overlapping life ranges.  At the moment we get those
extra "temporaries" by means of gimple restrictions which see global
register vars as memory.

Note that you can reliably prevent any "disturbing" transforms of global
register vars by declaring them volatile.

I suppose the real issue is that GCC inserts/moves sets of the global
register variable.  CSE across function calls could be easily inhibited
as well.

Reply via email to