This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[rfc] stack alignment macro cleanup


Currently we have

STACK_BOUNDARY
  -- minimum alignment enforced by hardware.

PREFERRED_STACK_BOUNDARY
  -- a preserved alignment greater than what the hw enforces
  (defaults to STACK_BOUNDARY)

INCOMING_STACK_BOUNDARY
  -- an alignment provided by callers on function entry.
  (defaults to PREFERRED_STACK_BOUNDARY)

MIN_STACK_BOUNDARY
  (undocumented; local to i386 atm)
  -- appears to be the ABI specified stack boundary, i.e.
  the minimum that must be in place at a call site.  This
  somehow differs from I_S_B due to proliferation of
  command-line options.

MAX_STACK_ALIGNMENT
  -- biggest stack alignment guaranteed by the backend.
  (defaults to STACK_BOUNDARY, @c sez ought to be P_S_B)

MAX_SUPPORTED_STACK_ALIGNMENT
  (undocumented; defined solely by defaults.h)
  -- the same as M_S_A, but with the P_S_B default.

I would like to reduce this to

STACK_BOUNDARY
  -- unchanged

INCOMING_STACK_BOUNDARY
  -- default to S_B; x86 backend drops MIN_S_B.

MAX_STACK_BOUNDARY
  -- default to I_S_B.

and delete many of the x86 backend options that fiddle
stuff that users ought not be fiddling.  Like forcing
the use of DRAP register.

Thoughts?


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]