From: Trevor Saunders <tbsaunde+...@tbsaunde.org>

gcc/ChangeLog:

2015-11-09  Trevor Saunders  <tbsaunde+...@tbsaunde.org>

        * defaults.h (EH_RETURN_HANDLER_RTX): New default definition.
        * df-scan.c (df_get_exit_block_use_set): Adjust.
        * except.c (expand_eh_return): Likewise.
---
 gcc/defaults.h | 4 ++++
 gcc/df-scan.c  | 2 --
 gcc/except.c   | 9 ++++-----
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/gcc/defaults.h b/gcc/defaults.h
index c20de44..047a0db 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1325,6 +1325,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. 
 If not, see
 #define TARGET_PECOFF 0
 #endif
 
+#ifndef EH_RETURN_HANDLER_RTX
+#define EH_RETURN_HANDLER_RTX NULL
+#endif
+
 #ifdef GCC_INSN_FLAGS_H
 /* Dependent default target macro definitions
 
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 2e5fe97..a735925 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -3714,7 +3714,6 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
     }
 #endif
 
-#ifdef EH_RETURN_HANDLER_RTX
   if ((!targetm.have_epilogue () || ! epilogue_completed)
       && crtl->calls_eh_return)
     {
@@ -3722,7 +3721,6 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
       if (tmp && REG_P (tmp))
        df_mark_reg (tmp, exit_block_uses);
     }
-#endif
 
   /* Mark function return value.  */
   diddle_return_value (df_mark_reg, (void*) exit_block_uses);
diff --git a/gcc/except.c b/gcc/except.c
index 1801fe7..1a41a34 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -2255,11 +2255,10 @@ expand_eh_return (void)
     emit_insn (targetm.gen_eh_return (crtl->eh.ehr_handler));
   else
     {
-#ifdef EH_RETURN_HANDLER_RTX
-      emit_move_insn (EH_RETURN_HANDLER_RTX, crtl->eh.ehr_handler);
-#else
-      error ("__builtin_eh_return not supported on this target");
-#endif
+      if (rtx handler = EH_RETURN_HANDLER_RTX)
+       emit_move_insn (handler, crtl->eh.ehr_handler);
+      else
+       error ("__builtin_eh_return not supported on this target");
     }
 
   emit_label (around_label);
-- 
2.5.0.rc1.5.gc07173f

Reply via email to