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

[Bug rtl-optimization/41619] [4.4/4.5/4.6 regression] ICE in insert_save (caller-save.c) for SPEC CPU2000's 252.eon


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


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