aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-07-05 07:44:45 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-07-05 07:44:45 +0000
commit8684d89dea02aad5fba0ef4cef4eb7e51ea74450 (patch)
tree3dfeb08ec615098e110099500704dd3f816af3a1 /gcc/expr.c
parent9d07490f09ebb24ea3fd58237878fff6ca676f99 (diff)
downloadgcc-8684d89dea02aad5fba0ef4cef4eb7e51ea74450.zip
gcc-8684d89dea02aad5fba0ef4cef4eb7e51ea74450.tar.gz
gcc-8684d89dea02aad5fba0ef4cef4eb7e51ea74450.tar.bz2
target.def: Add code_for_* hooks.
gcc/ * target.def: Add code_for_* hooks. * gentarget-def.c (def_target_insn): Add TARGET_CODE_FOR_* macros. * defaults.h (HAVE_tablejump, gen_tablejump): Delete. * target-insns.def (casesi, tablejump): New targetm instruction patterns. * expr.c (try_casesi): Use them instead of HAVE_*/gen_* interface. (do_tablejump): Likewise. * stmt.c (expand_switch_as_decision_tree_p): Likewise. (expand_sjlj_dispatch_table): Likewise. * targhooks.c (default_case_values_threshold): Likewise. From-SVN: r225421
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 5c0df44..87d2442 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -11058,14 +11058,6 @@ do_store_flag (sepops ops, rtx target, machine_mode mode)
&& !TYPE_UNSIGNED (ops->type)) ? -1 : 1);
}
-
-/* Stubs in case we haven't got a casesi insn. */
-#ifndef HAVE_casesi
-# define HAVE_casesi 0
-# define gen_casesi(a, b, c, d, e) (0)
-# define CODE_FOR_casesi CODE_FOR_nothing
-#endif
-
/* Attempt to generate a casesi instruction. Returns 1 if successful,
0 otherwise (i.e. if there is no casesi instruction).
@@ -11080,7 +11072,7 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range,
machine_mode index_mode = SImode;
rtx op1, op2, index;
- if (! HAVE_casesi)
+ if (! targetm.have_casesi ())
return 0;
/* Convert the index to SImode. */
@@ -11124,7 +11116,7 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range,
create_fixed_operand (&ops[4], (default_label
? default_label
: fallback_label));
- expand_jump_insn (CODE_FOR_casesi, 5, ops);
+ expand_jump_insn (targetm.code_for_casesi, 5, ops);
return 1;
}
@@ -11197,7 +11189,7 @@ do_tablejump (rtx index, machine_mode mode, rtx range, rtx table_label,
vector = gen_const_mem (CASE_VECTOR_MODE, index);
convert_move (temp, vector, 0);
- emit_jump_insn (gen_tablejump (temp, table_label));
+ emit_jump_insn (targetm.gen_tablejump (temp, table_label));
/* If we are generating PIC code or if the table is PC-relative, the
table and JUMP_INSN must be adjacent, so don't output a BARRIER. */
@@ -11211,7 +11203,7 @@ try_tablejump (tree index_type, tree index_expr, tree minval, tree range,
{
rtx index;
- if (! HAVE_tablejump)
+ if (! targetm.have_tablejump ())
return 0;
index_expr = fold_build2 (MINUS_EXPR, index_type,