// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-unknown-linux -emit-llvm -fsanitize=null %s -o - | FileCheck %s --check-prefix=CHECK-NULL --check-prefix=ITANIUM
// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-windows -emit-llvm -fsanitize=null %s -o - | FileCheck %s --check-prefix=CHECK-NULL --check-prefix=MSABI
// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-unknown-linux -emit-llvm -fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK-VPTR --check-prefix=ITANIUM
// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-windows -emit-llvm -fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK-VPTR --check-prefix=MSABI --check-prefix=CHECK-VPTR-MS
;
;
// CHECK-VPTR-MS: @__ubsan_vptr_type_cache = external dso_local
// ITANIUM: define{{.*}} i32 @_Z5get_vP1T
// MSABI: define dso_local noundef i32 @"?get_v
int
// ITANIUM: define{{.*}} void @_Z9delete_itP1T
// MSABI: define dso_local void @"?delete_it
void
// ITANIUM: define{{.*}} %struct.U* @_Z7dyncastP1T
// MSABI: define dso_local noundef %struct.U* @"?dyncast
U*