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 target/48542] mmix code which calls setjmp/longjmp may not work.


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.)


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