]> git.ipfire.org Git - thirdparty/gcc.git/commit
x86: Properly find the maximum stack slot alignment
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 14 Mar 2023 18:41:51 +0000 (11:41 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 28 Apr 2025 13:29:00 +0000 (21:29 +0800)
commitb9ea3b2ef98048f93b02fcd6ff51777bce1676c2
tree0ff9f36da807530f53343a4b119335f60a13879d
parent7a16ef443b13fff9537baa533597836c57131262
x86: Properly find the maximum stack slot alignment

Don't assume that stack slots can only be accessed by stack or frame
registers.  We first find all registers defined by stack or frame
registers.  Then check memory accesses by such registers, including
stack and frame registers.

gcc/

PR target/109780
PR target/109093
* config/i386/i386.cc (stack_access_data): New.
(ix86_update_stack_alignment): Likewise.
(ix86_find_all_reg_use_1): Likewise.
(ix86_find_all_reg_use): Likewise.
(ix86_find_max_used_stack_alignment): Also check memory accesses
from registers defined by stack or frame registers.

gcc/testsuite/

PR target/109780
PR target/109093
* g++.target/i386/pr109780-1.C: New test.
* gcc.target/i386/pr109093-1.c: Likewise.
* gcc.target/i386/pr109780-1.c: Likewise.
* gcc.target/i386/pr109780-2.c: Likewise.
* gcc.target/i386/pr109780-3.c: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
gcc/config/i386/i386.cc
gcc/testsuite/g++.target/i386/pr109780-1.C [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr109093-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr109780-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr109780-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr109780-3.c [new file with mode: 0644]