This is the mail archive of the gcc-patches@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]

[committed] Use target-insns.def for trap


Bootstrapped & regression-tested on x86_64-linux-gnu and aarch64-linux-gnu.
Also tested via config-list.mk.  Committed as preapproved.

Thanks,
Richard


gcc/
	* target-insns.def (trap): New targetm instruction pattern.
	* builtins.c (expand_builtin_trap): Use it instead of HAVE_*/gen_*
	interface.
	* explow.c (allocate_dynamic_stack_space): Likewise.
	* ifcvt.c (find_if_header): Likewise.

Index: gcc/target-insns.def
===================================================================
--- gcc/target-insns.def	2015-07-05 08:50:33.976046688 +0100
+++ gcc/target-insns.def	2015-07-05 08:50:33.972046718 +0100
@@ -51,5 +51,6 @@ DEF_TARGET_INSN (sibcall_epilogue, (void
 DEF_TARGET_INSN (simple_return, (void))
 DEF_TARGET_INSN (store_multiple, (rtx x0, rtx x1, rtx x2))
 DEF_TARGET_INSN (tablejump, (rtx x0, rtx x1))
+DEF_TARGET_INSN (trap, (void))
 DEF_TARGET_INSN (untyped_call, (rtx x0, rtx x1, rtx x2))
 DEF_TARGET_INSN (untyped_return, (rtx x0, rtx x1))
Index: gcc/builtins.c
===================================================================
--- gcc/builtins.c	2015-07-05 08:50:33.976046688 +0100
+++ gcc/builtins.c	2015-07-05 08:50:33.972046718 +0100
@@ -4737,10 +4737,9 @@ expand_builtin_assume_aligned (tree exp,
 void
 expand_builtin_trap (void)
 {
-#ifdef HAVE_trap
-  if (HAVE_trap)
+  if (targetm.have_trap ())
     {
-      rtx_insn *insn = emit_insn (gen_trap ());
+      rtx_insn *insn = emit_insn (targetm.gen_trap ());
       /* For trap insns when not accumulating outgoing args force
 	 REG_ARGS_SIZE note to prevent crossjumping of calls with
 	 different args sizes.  */
@@ -4748,7 +4747,6 @@ expand_builtin_trap (void)
 	add_reg_note (insn, REG_ARGS_SIZE, GEN_INT (stack_pointer_delta));
     }
   else
-#endif
     emit_library_call (abort_libfunc, LCT_NORETURN, VOIDmode, 0);
   emit_barrier ();
 }
Index: gcc/explow.c
===================================================================
--- gcc/explow.c	2015-07-05 08:50:33.976046688 +0100
+++ gcc/explow.c	2015-07-05 08:50:33.972046718 +0100
@@ -1422,11 +1422,9 @@ allocate_dynamic_stack_space (rtx size,
 
 	  emit_cmp_and_jump_insns (available, size, GEU, NULL_RTX, Pmode, 1,
 				   space_available);
-#ifdef HAVE_trap
-	  if (HAVE_trap)
-	    emit_insn (gen_trap ());
+	  if (targetm.have_trap ())
+	    emit_insn (targetm.gen_trap ());
 	  else
-#endif
 	    error ("stack limits not supported on this target");
 	  emit_barrier ();
 	  emit_label (space_available);
Index: gcc/ifcvt.c
===================================================================
--- gcc/ifcvt.c	2015-07-05 08:50:33.976046688 +0100
+++ gcc/ifcvt.c	2015-07-05 08:50:33.976046688 +0100
@@ -67,9 +67,6 @@ #define HAVE_incscc 0
 #ifndef HAVE_decscc
 #define HAVE_decscc 0
 #endif
-#ifndef HAVE_trap
-#define HAVE_trap 0
-#endif
 
 #ifndef MAX_CONDITIONAL_EXECUTE
 #define MAX_CONDITIONAL_EXECUTE \
@@ -3414,7 +3411,7 @@ find_if_header (basic_block test_bb, int
       && cond_exec_find_if_block (&ce_info))
     goto success;
 
-  if (HAVE_trap
+  if (targetm.have_trap ()
       && optab_handler (ctrap_optab, word_mode) != CODE_FOR_nothing
       && find_cond_trap (test_bb, then_edge, else_edge))
     goto success;


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