4 // Test lldb finds the correct parent context decl for functions and class methods when icf happens.
5 // RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -GS- -fno-addrsig -c /Fo%t.obj -- %s
6 // RUN: lld-link -opt:icf -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb
7 // RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols --dump-ast %t.exe | FileCheck %s
20 int f3(void*, int x
) {
27 int f4(void*, int x
) {
34 // Same base name as N1::f3 but different namespaces.
35 int f3(void*, int x
) {
38 // Same base name as B::f2 but this is in namespace.
39 int f2(void*, int x
) {
48 return a
.f1(1) + b
.f2(1) + N1::f3(nullptr, 1) + N2::N3::f4(nullptr, 1) +
53 // CHECK: namespace N1 {
54 // CHECK-NEXT: int f3(void *, int x);
56 // CHECK-NEXT: namespace N2 {
57 // CHECK-NEXT: namespace N3 {
58 // CHECK-NEXT: int f4(void *, int x);
61 // CHECK-NEXT: namespace N4 {
62 // CHECK-NEXT: int f3(void *, int x);
63 // CHECK-NEXT: int f2(void *, int x);
65 // CHECK-NEXT: int main();
66 // CHECK-NEXT: struct A {
67 // CHECK-NEXT: int f1(int);
69 // CHECK-NEXT: struct B {
70 // CHECK-NEXT: int f2(int);