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

Hans-Peter Nilsson <hp at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #23938|0                           |1
        is obsolete|                            |

--- Comment #6 from Hans-Peter Nilsson <hp at gcc dot gnu.org> 2011-06-14 
07:12:04 UTC ---
Created attachment 24516
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24516
Fix for trunk and maybe branches

Patch against trunk r174961.  Fixes in two places (reload.c:find_equiv_reg and
reload1.c:reload_as_needed) are necessary, because when register contents is
invalidated for the main path (the patch to reload1.c), there's fallback code
that also iterates over code, and which also lacks proper handling of
setjmp-type calls. So, you can see this bug on other targets if you're
"unlucky" enough to write code that need reloads and which seems reusable
across a setjmp-call.
This just naturally happens more often for mmix (like always), given that (set
rJ (mem ...)) is emitted after every call and always needs a reload through a
general register, and is always reloaded from the same mem.
(Tentative partial analysis.)

Reply via email to