https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78197

            Bug ID: 78197
           Summary: Stack layout strangeness on AIX and Power
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vogt at linux dot vnet.ibm.com
                CC: dje at gcc dot gnu.org
  Target Milestone: ---
            Target: AIX, Power

The file rs6000.h contains the macros

--
#define STACK_BOUNDARY  \
  ((TARGET_32BIT && !TARGET_ALTIVEC && !TARGET_ALTIVEC_ABI && !TARGET_VSX) \
    ? 64 : 128)

#define STARTING_FRAME_OFFSET                                           \
  (FRAME_GROWS_DOWNWARD                                                 \
   ? 0                                                                  \
   : (RS6000_ALIGN (crtl->outgoing_args_size,                           \
                    (TARGET_ALTIVEC || TARGET_VSX) ? 16 : 8)            \
      + RS6000_SAVE_AREA))

#define STACK_DYNAMIC_OFFSET(FUNDECL)                                   \
  (RS6000_ALIGN (crtl->outgoing_args_size,                              \
                 (TARGET_ALTIVEC || TARGET_VSX) ? 16 : 8)               \
   + (STACK_POINTER_OFFSET))
--

Does STACK_BOUNDARY use a different conditions to decide betweeen 8 and 16 byte
alignment than the other two macros?  In aix.h, STACK_BOUNDARY is hard coded to
128, so at least on AIX these conditions seem to be broken.

Reply via email to