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