This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/41619] [4.4/4.5/4.6 regression] ICE in insert_save (caller-save.c) for SPEC CPU2000's 252.eon
- From: "law at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 20 Jan 2011 00:49:54 +0000
- Subject: [Bug rtl-optimization/41619] [4.4/4.5/4.6 regression] ICE in insert_save (caller-save.c) for SPEC CPU2000's 252.eon
- Auto-submitted: auto-generated
- References: <bug-41619-4@http.gcc.gnu.org/bugzilla/>
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