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

--- Comment #33 from Uroš Bizjak <ubizjak at gmail dot com> ---
FTR, ix86_find_max_used_stack_alignment increases alignment only when stack
pointer or frame pointer are explicitly mentioned in :

                /* Find the maximum stack alignment.  */
                subrtx_iterator::array_type array;
                FOR_EACH_SUBRTX (iter, array, PATTERN (insn), ALL)
                  if (MEM_P (*iter)
                      && (reg_mentioned_p (stack_pointer_rtx,
                                           *iter)
                          || reg_mentioned_p (frame_pointer_rtx,
                                              *iter)))
                    {
                      unsigned int alignment = MEM_ALIGN (*iter);
                      if (alignment > stack_alignment)
                        stack_alignment = alignment;


This RTX does *not* trigger stack alignment increase in the above code:

(insn 94 20 95 5 (set (mem/c:V16QI (reg/f:DI 1 dx [110]) [0 MEM <char[1:40]>
[(void *)&k]+0 S16 A128])
        (reg:V16QI 21 xmm1 [orig:122 MEM <char[1:40]> [(void *)&k] ] [122]))
"pr109780.c":11:12 2015 {movv16qi_internal}
     (nil))

Reply via email to