aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-04-16 16:51:20 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-04-16 16:51:20 -0400
commit1e2414db59c4aeaebd1d4d77a89f196985aded57 (patch)
tree71ce5287ebb0a266be85f9025813134b296eaf8e /gcc/function.c
parent8b7bf67189a6cba6c3e726eb5d81e0d24c8a4ef5 (diff)
downloadgcc-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.c17
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 ();