testsuite, i386: add tests for over-aligned stack objects [PR54412]

Cover the places where an object needs more alignment than the frame can
give it: the home slot of a by-value parameter, both when nothing else sees
it and when its address escapes to a callee, the hidden copy the caller makes
when the MS ABI passes an argument by reference, and a copy that GCC merely
prefers to over-align.

Where nothing else sees the object, it only has to be stored with a move that
matches its slot, so those tests scan for the move GCC selects.  Where the
address escapes, the object must really be aligned, so those tests scan for
the mask that rounds the slot address up.  None of them runs the code: a slot
that is short of the alignment the object needs still lands on a 32-byte
boundary about half the time.

The dg-do run C++ test covers an over-aligned temporary used on both arms of
a branch.

gcc/testsuite/ChangeLog:

	PR target/54412
	* g++.target/i386/pr54412-highpart-extract-rt.C: New test.
	* gcc.target/i386/pr54412-aligned-struct-byval-temp.c: New test.
	* gcc.target/i386/pr54412-blkmode-temp-biggest-align.c: New test.
	* gcc.target/i386/pr54412-escaping-param.c: New test.
	* gcc.target/i386/pr54412-m256-byval-param.c: New test.

Signed-off-by: Oleg Tolmatcev <oleg.tolmatcev@gmail.com>
Signed-off-by: Jonathan Yong <10walls@gmail.com>
5 files changed