Commit 3eb4e360 by Alan Modra Committed by Alan Modra

re PR middle-end/12769 (-mlongcall doesn't convert all calls to long calls for builtin functions)

	PR target/12769
	* config/rs6000/rs6000.c (init_cumulative_args): Set call_cookie
	from rs6000_default_long_calls for libcalls.

From-SVN: r91362
parent 360e3535
2004-11-27 Alan Modra <amodra@bigpond.net.au>
PR target/12769
* config/rs6000/rs6000.c (init_cumulative_args): Set call_cookie
from rs6000_default_long_calls for libcalls.
2004-11-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 2004-11-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* expmed.c (extract_bit_field): When extracting from non-integer mode, * expmed.c (extract_bit_field): When extracting from non-integer mode,
......
...@@ -278,7 +278,8 @@ static GTY(()) int rs6000_sr_alias_set; ...@@ -278,7 +278,8 @@ static GTY(()) int rs6000_sr_alias_set;
/* Call distance, overridden by -mlongcall and #pragma longcall(1). /* Call distance, overridden by -mlongcall and #pragma longcall(1).
The only place that looks at this is rs6000_set_default_type_attributes; The only place that looks at this is rs6000_set_default_type_attributes;
everywhere else should rely on the presence or absence of a longcall everywhere else should rely on the presence or absence of a longcall
attribute on the function declaration. */ attribute on the function declaration. Exception: init_cumulative_args
looks at it too, for libcalls. */
int rs6000_default_long_calls; int rs6000_default_long_calls;
const char *rs6000_longcall_switch; const char *rs6000_longcall_switch;
...@@ -4699,10 +4700,11 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, ...@@ -4699,10 +4700,11 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
cum->nargs_prototype = n_named_args; cum->nargs_prototype = n_named_args;
/* Check for a longcall attribute. */ /* Check for a longcall attribute. */
if (fntype if ((!fntype && rs6000_default_long_calls)
&& lookup_attribute ("longcall", TYPE_ATTRIBUTES (fntype)) || (fntype
&& !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype))) && lookup_attribute ("longcall", TYPE_ATTRIBUTES (fntype))
cum->call_cookie = CALL_LONG; && !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype))))
cum->call_cookie |= CALL_LONG;
if (TARGET_DEBUG_ARG) if (TARGET_DEBUG_ARG)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment