i386: Add tests for over-aligned stack objects
New test cases verify handling of objects requiring more alignment than the stack frame can provide.
This commit adds several test cases for the i386 architecture to address issues with over-aligned stack objects. These tests cover scenarios involving by-value parameters, escaped addresses, and compiler-preferred over-alignment, ensuring correct alignment handling by the compiler.
In Details
Introduces test cases for PR54412 on i386, focusing on scenarios where stack objects (parameters, temporaries) require alignment exceeding the default stack frame capabilities. This includes testing the correct alignment of object slots, especially when addresses escape to callees or when the MS ABI is in use. The tests differentiate between cases where only the move operation needs to match slot alignment and cases where the object itself must be strictly aligned.
- over-aligned stack objects
- Data objects placed on the call stack that require a stricter memory alignment than the standard stack frame naturally provides.
- by-value parameter
- A function parameter passed by copying its value, rather than by reference or pointer. For large objects, this can involve stack allocation.
- MS ABI
- Microsoft Visual C++ Application Binary Interface. Specifies calling conventions and data layout for applications on Windows.
- slot
- A contiguous region of memory on the stack frame allocated to hold a variable, parameter, or temporary value.