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