// RUN: %clang_cc1 -triple x86_64-unknown-linux -fexperimental-call-graph-section -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s // Check that we do not generate callee_type metadata for indirect calls // to functions with internal linkage (e.g., types in anonymous namespaces), // as their type metadata identifiers are distinct MDNodes instead of // generalized strings, which would fail the LLVM Verifier. namespace { class a; class b { public: virtual void c(a); }; class a { public: b &e; void d() { e.c(*this); } }; void b::c(a) {} void f() { a *g = nullptr; g->d(); } } // namespace void test() { f(); } // CHECK-LABEL: define {{.*}} void @{{.*}}1a1dEv // CHECK: %[[VFN:.*]] = getelementptr inbounds ptr, ptr %{{.*}}, i{{[0-9]+}} 0 // CHECK: %[[FP:.*]] = load ptr, ptr %[[VFN]], align {{[0-9]+}} // CHECK: call void %[[FP]]({{.*}}) // CHECK-NOT: !callee_type // CHECK: ret void