1*67e74705SXin Li // RUN: %clang_cc1 -triple %itanium_abi_triple -fvisibility hidden -fms-extensions -fsanitize=cfi-vcall -emit-llvm -o - %s | FileCheck --check-prefix=CHECK --check-prefix=NOBL %s 2*67e74705SXin Li // RUN: echo "type:std::*" > %t.txt 3*67e74705SXin Li // RUN: %clang_cc1 -triple %itanium_abi_triple -fvisibility hidden -fms-extensions -fsanitize=cfi-vcall -fsanitize-blacklist=%t.txt -emit-llvm -o - %s | FileCheck --check-prefix=CHECK --check-prefix=NOSTD %s 4*67e74705SXin Li 5*67e74705SXin Li struct S1 { 6*67e74705SXin Li virtual void f(); 7*67e74705SXin Li }; 8*67e74705SXin Li 9*67e74705SXin Li namespace std { 10*67e74705SXin Li 11*67e74705SXin Li struct S2 { 12*67e74705SXin Li virtual void f(); 13*67e74705SXin Li }; 14*67e74705SXin Li 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li // CHECK: define{{.*}}s1f 18*67e74705SXin Li // NOBL: llvm.type.test 19*67e74705SXin Li // NOSTD: llvm.type.test s1f(S1 * s1)20*67e74705SXin Livoid s1f(S1 *s1) { 21*67e74705SXin Li s1->f(); 22*67e74705SXin Li } 23*67e74705SXin Li 24*67e74705SXin Li // CHECK: define{{.*}}s2f 25*67e74705SXin Li // NOBL: llvm.type.test 26*67e74705SXin Li // NOSTD-NOT: llvm.type.test s2f(std::S2 * s2)27*67e74705SXin Livoid s2f(std::S2 *s2) { 28*67e74705SXin Li s2->f(); 29*67e74705SXin Li } 30