function.c (adjust_trampoline_addr): New function.
* function.c (adjust_trampoline_addr): New function. (trampoline_address): Call it instead of round_trampoline_addr(). * tm.texi (TRAMPOLINE_ADJUST_ADDRESS): Document it. From-SVN: r38279
This commit is contained in:
parent
1e0cdc1036
commit
b33493e3f3
@ -1,3 +1,9 @@
|
||||
2000-12-15 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* function.c (adjust_trampoline_addr): New function.
|
||||
(trampoline_address): Call it instead of round_trampoline_addr().
|
||||
* tm.texi (TRAMPOLINE_ADJUST_ADDRESS): Document it.
|
||||
|
||||
2000-12-14 Zack Weinberg <zack@wolery.stanford.edu>
|
||||
|
||||
* cppfiles.c (hack_vms_include_specification): Delete function
|
||||
|
@ -279,6 +279,7 @@ static void pad_below PARAMS ((struct args_size *, enum machine_mode,
|
||||
tree));
|
||||
#endif
|
||||
static rtx round_trampoline_addr PARAMS ((rtx));
|
||||
static rtx adjust_trampoline_addr PARAMS ((rtx));
|
||||
static tree *identify_blocks_1 PARAMS ((rtx, tree *, tree *, tree *));
|
||||
static void reorder_blocks_1 PARAMS ((rtx, tree, varray_type *));
|
||||
static tree blocks_nreverse PARAMS ((tree));
|
||||
@ -5553,7 +5554,7 @@ trampoline_address (function)
|
||||
for (link = trampoline_list; link; link = TREE_CHAIN (link))
|
||||
if (TREE_PURPOSE (link) == function)
|
||||
return
|
||||
round_trampoline_addr (XEXP (RTL_EXPR_RTL (TREE_VALUE (link)), 0));
|
||||
adjust_trampoline_addr (XEXP (RTL_EXPR_RTL (TREE_VALUE (link)), 0));
|
||||
|
||||
for (fp = outer_function_chain; fp; fp = fp->next)
|
||||
for (link = fp->x_trampoline_list; link; link = TREE_CHAIN (link))
|
||||
@ -5561,7 +5562,7 @@ trampoline_address (function)
|
||||
{
|
||||
tramp = fix_lexical_addr (XEXP (RTL_EXPR_RTL (TREE_VALUE (link)), 0),
|
||||
function);
|
||||
return round_trampoline_addr (tramp);
|
||||
return adjust_trampoline_addr (tramp);
|
||||
}
|
||||
|
||||
/* None exists; we must make one. */
|
||||
@ -5612,7 +5613,7 @@ trampoline_address (function)
|
||||
}
|
||||
|
||||
tramp = fix_lexical_addr (XEXP (tramp, 0), function);
|
||||
return round_trampoline_addr (tramp);
|
||||
return adjust_trampoline_addr (tramp);
|
||||
}
|
||||
|
||||
/* Given a trampoline address,
|
||||
@ -5634,6 +5635,21 @@ round_trampoline_addr (tramp)
|
||||
#endif
|
||||
return tramp;
|
||||
}
|
||||
|
||||
/* Given a trampoline address, round it then apply any
|
||||
platform-specific adjustments so that the result can be used for a
|
||||
function call . */
|
||||
|
||||
static rtx
|
||||
adjust_trampoline_addr (tramp)
|
||||
rtx tramp;
|
||||
{
|
||||
tramp = round_trampoline_addr (tramp);
|
||||
#ifdef TRAMPOLINE_ADJUST_ADDRESS
|
||||
TRAMPOLINE_ADJUST_ADDRESS (tramp);
|
||||
#endif
|
||||
return tramp;
|
||||
}
|
||||
|
||||
/* Put all this function's BLOCK nodes including those that are chained
|
||||
onto the first block into a vector, and return it.
|
||||
|
10
gcc/tm.texi
10
gcc/tm.texi
@ -4034,6 +4034,16 @@ an RTX for the address of the nested function; @var{static_chain} is an
|
||||
RTX for the static chain value that should be passed to the function
|
||||
when it is called.
|
||||
|
||||
@findex TRAMPOLINE_ADJUST_ADDRESS
|
||||
@item TRAMPOLINE_ADJUST_ADDRESS (@var{addr})
|
||||
A C statement that should perform any machine-specific adjustment in
|
||||
the address of the trampoline. Its argument contains the address that
|
||||
was passed to @code{INITIALIZE_TRAMPOLINE}. In case the address to be
|
||||
used for a function call should be different from the address in which
|
||||
the template was stored, the different address should be assigned to
|
||||
@var{addr}. If this macro is not defined, @var{addr} will be used for
|
||||
function calls.
|
||||
|
||||
@findex ALLOCATE_TRAMPOLINE
|
||||
@item ALLOCATE_TRAMPOLINE (@var{fp})
|
||||
A C expression to allocate run-time space for a trampoline. The
|
||||
|
Loading…
Reference in New Issue
Block a user