In the past (9 or so years ago) there was an issue with floating point that required the stack to be 8 byte aligned. It was too long ago, so I do not remember the details, j (There is a note in the release notes, "ARM EABI: Fix stack alignment required for passing floating point values.") But I do remember that printf printed garbage until the STACK_ALIGN_xxxx stuff was done.
That was when we switch from OABI (which has has a maximum data alignment of 4 bytes requirements) to EABI which requires 8-byte alignment but ONLY for 64-bit types double and long long. We ran EABI for a long time with only 4-byte alignment; the failures are really rather subtle and easily overlooked.
This does not apply only to stacks, but also to static data, stack variable allocations, and to heap allocations. All data needs to be 8-byte aligned because it might have a double or long long in it.
See, as an example, https://docs.microsoft.com/en-us/cpp/build/overview-of-arm-abi-conventions
It was a long time ago when I made that change: 2011