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

Jeffrey A. Law <law at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot       |law at redhat dot com
                   |gnu.org                     |

--- Comment #8 from Jeffrey A. Law <law at redhat dot com> 2011-01-20 00:49:46 
UTC ---

This problem only exposes itself when there are uses of uninitialized variables
and -fno-ira-share-save-slots is enabled.   In this circumstance the reg_info
structure may claim that a pseudo is not live across a  call.  However, if the
pseudo is used after the call in an initialized state, then the reload chains
will claim the pseudo is live across the call.

The inconsistency in those data structures ultimately leads to an inconsistency
in setup_save_areas and save_call_clobbered_regs which triggers the ICE.

I think the way to go is use the same code regardless of
-fno-ira-share-save-slots in setup_save_areas to determine which hard regs need
saving.  A quick test shows that works.

I'm going to have to clean up that preliminary patch and do some more rigorous
testing, including regtesting with -fno-ira-share-save-slots.

Jeff

Reply via email to