+2015-11-14 Trevor Saunders <tbsaunde+gcc@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.
+
2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* config/i386/i386.h (TARGET_PECOFF): Remove define.
#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
}
#endif
-#ifdef EH_RETURN_HANDLER_RTX
if ((!targetm.have_epilogue () || ! epilogue_completed)
&& crtl->calls_eh_return)
{
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);
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);