Message ID | 20101008105938.GM17388@nightcrawler |
---|---|
State | New |
Headers | show |
Hi Nathan, > * config/fr30/fr30.c (TARGET_EXCEPT_UNWIND_INFO): Define. > * config/fr30/fr30.md (leave_func): Rewrite without post_inc. Approved - please apply - and thanks for fixing this! Cheers Nick
On 10/08/2010 03:59 AM, Nathan Froyd wrote: > - [(set (reg:SI 15) (reg:SI 14)) > - (set (reg:SI 14) (mem:SI (post_inc:SI (reg:SI 15))))] > + [(set (reg:SI 15) (plus:SI (reg:SI 14) (const_int 4))) > + (set (reg:SI 14) (mem:SI (minus:SI (reg:SI 15) (const_int 4))))] This isn't correct either. This is (implicitly) a PARALLEL. I.e. all actions take place simultaneously. I.e. r15 has not been updated for use in the SET of r14. (parallel [(set r15 (plus r14 4)) (set r14 (mem r14))]) r~
Index: config/fr30/fr30.md =================================================================== --- config/fr30/fr30.md (revision 165159) +++ config/fr30/fr30.md (working copy) @@ -1203,8 +1203,8 @@ (define_insn "return_from_func" ) (define_insn "leave_func" - [(set (reg:SI 15) (reg:SI 14)) - (set (reg:SI 14) (mem:SI (post_inc:SI (reg:SI 15))))] + [(set (reg:SI 15) (plus:SI (reg:SI 14) (const_int 4))) + (set (reg:SI 14) (mem:SI (minus:SI (reg:SI 15) (const_int 4))))] "reload_completed" "leave" ) Index: config/fr30/fr30.c =================================================================== --- config/fr30/fr30.c (revision 165159) +++ config/fr30/fr30.c (working copy) @@ -172,6 +172,9 @@ static void fr30_trampoline_init (rtx, t #undef TARGET_TRAMPOLINE_INIT #define TARGET_TRAMPOLINE_INIT fr30_trampoline_init +#undef TARGET_EXCEPT_UNWIND_INFO +#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info + struct gcc_target targetm = TARGET_INITIALIZER;