diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-04-16 16:51:20 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-04-16 16:51:20 -0400 |
commit | 1e2414db59c4aeaebd1d4d77a89f196985aded57 (patch) | |
tree | 71ce5287ebb0a266be85f9025813134b296eaf8e /gcc/function.c | |
parent | 8b7bf67189a6cba6c3e726eb5d81e0d24c8a4ef5 (diff) | |
download | gcc-1e2414db59c4aeaebd1d4d77a89f196985aded57.zip gcc-1e2414db59c4aeaebd1d4d77a89f196985aded57.tar.gz gcc-1e2414db59c4aeaebd1d4d77a89f196985aded57.tar.bz2 |
(expand_function_end): Allow TRAMPOLINE_TEMPLATE
to be omitted on systems for which it is not cost effective.
From-SVN: r11822
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/gcc/function.c b/gcc/function.c index 5c2b701..4d0966f 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5309,7 +5309,9 @@ expand_function_end (filename, line, end_bindings) register int i; tree link; +#ifdef TRAMPOLINE_TEMPLATE static rtx initial_trampoline; +#endif if (output_bytecode) { @@ -5342,8 +5344,10 @@ expand_function_end (filename, line, end_bindings) tree function = TREE_PURPOSE (link); rtx context = lookup_static_chain (function); rtx tramp = RTL_EXPR_RTL (TREE_VALUE (link)); + rtx blktramp; rtx seq; +#ifdef TRAMPOLINE_TEMPLATE /* First make sure this compilation has a template for initializing trampolines. */ if (initial_trampoline == 0) @@ -5353,15 +5357,18 @@ expand_function_end (filename, line, end_bindings) = gen_rtx (MEM, BLKmode, assemble_trampoline_template ()); resume_temporary_allocation (); } +#endif /* Generate insns to initialize the trampoline. */ start_sequence (); - tramp = change_address (initial_trampoline, BLKmode, - round_trampoline_addr (XEXP (tramp, 0))); - emit_block_move (tramp, initial_trampoline, GEN_INT (TRAMPOLINE_SIZE), + tramp = round_trampoline_addr (XEXP (tramp, 0)); +#ifdef TRAMPOLINE_TEMPLATE + blktramp = change_address (initial_trampoline, BLKmode, tramp); + emit_block_move (blktramp, initial_trampoline, + GEN_INT (TRAMPOLINE_SIZE), FUNCTION_BOUNDARY / BITS_PER_UNIT); - INITIALIZE_TRAMPOLINE (XEXP (tramp, 0), - XEXP (DECL_RTL (function), 0), context); +#endif + INITIALIZE_TRAMPOLINE (tramp, XEXP (DECL_RTL (function), 0), context); seq = get_insns (); end_sequence (); |