Lines 8230-8240
find_drap_reg (void)
Link Here
|
8230 |
static void |
8230 |
static void |
8231 |
ix86_update_stack_boundary (void) |
8231 |
ix86_update_stack_boundary (void) |
8232 |
{ |
8232 |
{ |
|
|
8233 |
/* Should we use STACK_BOUNDARY for incoming stack boundary? */ |
8234 |
unsigned int incoming_stack_boundary; |
8235 |
|
8236 |
if (cfun->machine->use_stack_boundary_for_incoming_stack_boundary) |
8237 |
incoming_stack_boundary = STACK_BOUNDARY; |
8238 |
else |
8239 |
incoming_stack_boundary = ix86_default_incoming_stack_boundary; |
8240 |
|
8233 |
/* Prefer the one specified at command line. */ |
8241 |
/* Prefer the one specified at command line. */ |
8234 |
ix86_incoming_stack_boundary |
8242 |
ix86_incoming_stack_boundary |
8235 |
= (ix86_user_incoming_stack_boundary |
8243 |
= (ix86_user_incoming_stack_boundary |
8236 |
? ix86_user_incoming_stack_boundary |
8244 |
? ix86_user_incoming_stack_boundary |
8237 |
: ix86_default_incoming_stack_boundary); |
8245 |
: incoming_stack_boundary); |
8238 |
|
8246 |
|
8239 |
/* Incoming stack alignment can be changed on individual functions |
8247 |
/* Incoming stack alignment can be changed on individual functions |
8240 |
via force_align_arg_pointer attribute. We use the smallest |
8248 |
via force_align_arg_pointer attribute. We use the smallest |
Lines 20069-20074
ix86_local_alignment (tree exp, enum mac
Link Here
|
20069 |
return align; |
20077 |
return align; |
20070 |
} |
20078 |
} |
20071 |
|
20079 |
|
|
|
20080 |
#define VALID_SSE_VECTOR_MODE(MODE) \ |
20081 |
((MODE) == V4SFmode || (MODE) == V4SImode || (MODE) == V2DFmode \ |
20082 |
|| (MODE) == V16QImode || (MODE) == V8HImode || (MODE) == V2DImode) |
20083 |
|
20072 |
/* Compute the minimum required alignment for dynamic stack realignment |
20084 |
/* Compute the minimum required alignment for dynamic stack realignment |
20073 |
purposes for a local variable, parameter or a stack slot. EXP is |
20085 |
purposes for a local variable, parameter or a stack slot. EXP is |
20074 |
the data type or decl itself, MODE is its mode and ALIGN is the |
20086 |
the data type or decl itself, MODE is its mode and ALIGN is the |
Lines 20080-20086
ix86_minimum_alignment (tree exp, enum m
Link Here
|
20080 |
{ |
20092 |
{ |
20081 |
tree type, decl; |
20093 |
tree type, decl; |
20082 |
|
20094 |
|
20083 |
if (TARGET_64BIT || align != 64 || ix86_preferred_stack_boundary >= 64) |
20095 |
if (TARGET_64BIT) |
20084 |
return align; |
20096 |
return align; |
20085 |
|
20097 |
|
20086 |
if (exp && DECL_P (exp)) |
20098 |
if (exp && DECL_P (exp)) |
Lines 20094-20099
ix86_minimum_alignment (tree exp, enum m
Link Here
|
20094 |
decl = NULL; |
20106 |
decl = NULL; |
20095 |
} |
20107 |
} |
20096 |
|
20108 |
|
|
|
20109 |
/* In 32bit, use STACK_BOUNDARY for incoming stack boundary if any |
20110 |
SSE variables are put on stack. */ |
20111 |
if (VALID_SSE_VECTOR_MODE (mode) |
20112 |
|| (type && VALID_SSE_VECTOR_MODE (TYPE_MODE (type)))) |
20113 |
cfun->machine->use_stack_boundary_for_incoming_stack_boundary = 1; |
20114 |
|
20115 |
if (align != 64 || ix86_preferred_stack_boundary >= 64) |
20116 |
return align; |
20117 |
|
20097 |
/* Don't do dynamic stack realignment for long long objects with |
20118 |
/* Don't do dynamic stack realignment for long long objects with |
20098 |
-mpreferred-stack-boundary=2. */ |
20119 |
-mpreferred-stack-boundary=2. */ |
20099 |
if ((mode == DImode || (type && TYPE_MODE (type) == DImode)) |
20120 |
if ((mode == DImode || (type && TYPE_MODE (type) == DImode)) |