diff options
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index c5a7980..f354694 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -104,9 +104,7 @@ static int target_char_cast (tree, char *); static rtx get_memory_rtx (tree, tree); static int apply_args_size (void); static int apply_result_size (void); -#if defined (HAVE_untyped_call) || defined (HAVE_untyped_return) static rtx result_vector (int, rtx); -#endif static void expand_builtin_prefetch (tree); static rtx expand_builtin_apply_args (void); static rtx expand_builtin_apply_args_1 (void); @@ -1448,7 +1446,6 @@ apply_result_size (void) return size; } -#if defined (HAVE_untyped_call) || defined (HAVE_untyped_return) /* Create a vector describing the result block RESULT. If SAVEP is true, the result block is used to save the values; otherwise it is used to restore the values. */ @@ -1477,7 +1474,6 @@ result_vector (int savep, rtx result) } return gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (nelts, savevec)); } -#endif /* HAVE_untyped_call or HAVE_untyped_return */ /* Save the state required to perform an untyped call with the same arguments as were passed to the current function. */ @@ -1698,12 +1694,13 @@ expand_builtin_apply (rtx function, rtx arguments, rtx argsize) function = memory_address (FUNCTION_MODE, function); /* Generate the actual call instruction and save the return value. */ -#ifdef HAVE_untyped_call - if (HAVE_untyped_call) - emit_call_insn (gen_untyped_call (gen_rtx_MEM (FUNCTION_MODE, function), - result, result_vector (1, result))); + if (targetm.have_untyped_call ()) + { + rtx mem = gen_rtx_MEM (FUNCTION_MODE, function); + emit_call_insn (targetm.gen_untyped_call (mem, result, + result_vector (1, result))); + } else -#endif #ifdef HAVE_call_value if (HAVE_call_value) { @@ -1767,14 +1764,13 @@ expand_builtin_return (rtx result) apply_result_size (); result = gen_rtx_MEM (BLKmode, result); -#ifdef HAVE_untyped_return - if (HAVE_untyped_return) + if (targetm.have_untyped_return ()) { - emit_jump_insn (gen_untyped_return (result, result_vector (0, result))); + rtx vector = result_vector (0, result); + emit_jump_insn (targetm.gen_untyped_return (result, vector)); emit_barrier (); return; } -#endif /* Restore the return value and note that each value is used. */ size = 0; |