Commit 9aa5c1b2 by Jan Hubicka Committed by Jan Hubicka

i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI


	* i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
	* i386.c (init_cumulative_args): Disallow calls of MSABI functions when
	accumulate outgoing args is off.

Co-Authored-By: Kai Tietz <kai.tietz@onevision.com>

From-SVN: r143118
parent f7556aae
2009-01-06 Jan Hubicka <jh@suse.cz>
Kai Tietz <kai.tietz@onevision.com>
* i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
* i386.c (init_cumulative_args): Disallow calls of MSABI functions when
accumulate outgoing args is off.
2009-01-06 H.J. Lu <hongjiu.lu@intel.com> 2009-01-06 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/38742 PR bootstrap/38742
......
...@@ -4639,6 +4639,9 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, /* Argument info to initialize */ ...@@ -4639,6 +4639,9 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, /* Argument info to initialize */
else else
cum->call_abi = ix86_function_type_abi (fntype); cum->call_abi = ix86_function_type_abi (fntype);
/* Set up the number of registers to use for passing arguments. */ /* Set up the number of registers to use for passing arguments. */
if (cum->call_abi == MS_ABI && !ACCUMULATE_OUTGOING_ARGS)
sorry ("ms_abi attribute require -maccumulate-outgoing-args or subtarget optimization implying it");
cum->nregs = ix86_regparm; cum->nregs = ix86_regparm;
if (TARGET_64BIT) if (TARGET_64BIT)
{ {
......
...@@ -1509,9 +1509,13 @@ enum reg_class ...@@ -1509,9 +1509,13 @@ enum reg_class
be computed and placed into the variable be computed and placed into the variable
`crtl->outgoing_args_size'. No space will be pushed onto the `crtl->outgoing_args_size'. No space will be pushed onto the
stack for each call; instead, the function prologue should increase the stack stack for each call; instead, the function prologue should increase the stack
frame size by this amount. */ frame size by this amount.
MS ABI seem to require 16 byte alignment everywhere except for function
prologue and apilogue. This is not possible without
ACCUMULATE_OUTGOING_ARGS. */
#define ACCUMULATE_OUTGOING_ARGS TARGET_ACCUMULATE_OUTGOING_ARGS #define ACCUMULATE_OUTGOING_ARGS (TARGET_ACCUMULATE_OUTGOING_ARGS || ix86_cfun_abi () == MS_ABI)
/* If defined, a C expression whose value is nonzero when we want to use PUSH /* If defined, a C expression whose value is nonzero when we want to use PUSH
instructions to pass outgoing arguments. */ instructions to pass outgoing arguments. */
......
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