View | Details | Return to bug 40838 | Differences between
and this patch

Collapse All | Expand All

(-)config/i386/i386.h (+2 lines)
Lines 2389-2394 struct GTY(()) machine_function { Link Here
2389
  /* This value is used for amd64 targets and specifies the current abi
2389
  /* This value is used for amd64 targets and specifies the current abi
2390
     to be used. MS_ABI means ms abi. Otherwise SYSV_ABI means sysv abi.  */
2390
     to be used. MS_ABI means ms abi. Otherwise SYSV_ABI means sysv abi.  */
2391
  enum calling_abi call_abi;
2391
  enum calling_abi call_abi;
2392
  /* Use STACK_BOUNDARY for incoming stack boundary.  */
2393
  int use_stack_boundary_for_incoming_stack_boundary;
2392
  struct machine_cfa_state cfa;
2394
  struct machine_cfa_state cfa;
2393
};
2395
};
2394
#endif
2396
#endif
(-)config/i386/i386.c (-2 / +23 lines)
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))

Return to bug 40838