mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-21 12:35:47 -04:00

If using a custom stack alignment, one is expected to make sure that all callers provide such alignment, or realign the stack in all entry points (and callbacks). Despite this, the compiler can assume that the main function will need realignment in these cases, since the startup routines calling the main function most probably won't provide the custom alignment. This matches what GCC does in similar cases; if compiling with -mincoming-stack-boundary=X -mpreferred-stack-boundary=X, GCC normally assumes such alignment on entry to a function, but specifically for the main function still does realignment. Differential Revision: https://reviews.llvm.org/D51026 llvm-svn: 340334
20 lines
526 B
C
20 lines
526 B
C
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - -mstack-alignment=64 %s | FileCheck %s
|
|
|
|
// CHECK-LABEL: define void @other()
|
|
// CHECK: [[OTHER:#[0-9]+]]
|
|
// CHECK: {
|
|
void other(void) {}
|
|
|
|
// CHECK-LABEL: define i32 @main(
|
|
// CHECK: [[MAIN:#[0-9]+]]
|
|
// CHECK: {
|
|
int main(int argc, char **argv) {
|
|
other();
|
|
return 0;
|
|
}
|
|
|
|
// CHECK: attributes [[OTHER]] = { noinline nounwind optnone
|
|
// CHECK-NOT: "stackrealign"
|
|
// CHECK: }
|
|
// CHECK: attributes [[MAIN]] = { noinline nounwind optnone {{.*}}"stackrealign"{{.*}} }
|