diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-07-05 07:44:45 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-07-05 07:44:45 +0000 |
commit | 8684d89dea02aad5fba0ef4cef4eb7e51ea74450 (patch) | |
tree | 3dfeb08ec615098e110099500704dd3f816af3a1 /gcc/expr.c | |
parent | 9d07490f09ebb24ea3fd58237878fff6ca676f99 (diff) | |
download | gcc-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.c | 16 |
1 files changed, 4 insertions, 12 deletions
@@ -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, |