// RUN: %clang_cl %s -o %t.exe -fuse-ld=lld -Z7 // RUN: grep DE[B]UGGER: %s | sed -e 's/.*DE[B]UGGER: //' > %t.script // RUN: %cdb -cf %t.script %t.exe | FileCheck %s --check-prefixes=DEBUGGER,CHECK // From https://llvm.org/pr38857, where we had issues with stack realignment. struct Foo { int x = 42; int __declspec(noinline) foo(); void __declspec(noinline) bar(int *a, int *b, double *c); }; int Foo::foo() { int a = 1; int b = 2; double __declspec(align(32)) force_alignment = 0.42; bar(&a, &b, &force_alignment); // DEBUGGER: g // DEBUGGER: .frame 1 // DEBUGGER: dv // CHECK: a = 0n1 // CHECK: b = 0n2 // CHECK: force_alignment = 0.41999{{.*}} // DEBUGGER: q x += (int)force_alignment; return x; } void Foo::bar(int *a, int *b, double *c) { __debugbreak(); *c += *a + *b; } int main() { Foo o; o.foo(); }