21 lines
480 B
C++
21 lines
480 B
C++
|
// RUN: %clang_cc1 -std=c++11 -fsanitize=vptr -emit-llvm %s -o - -triple wasm32-unknown-emscripten | FileCheck %s
|
||
|
|
||
|
struct S {
|
||
|
virtual ~S() {}
|
||
|
int a;
|
||
|
};
|
||
|
|
||
|
struct T : S {
|
||
|
int b;
|
||
|
};
|
||
|
|
||
|
// CHECK-LABEL: @_Z15bad_static_castv
|
||
|
void bad_static_cast() {
|
||
|
S s;
|
||
|
// CHECK: br i1 %[[NONNULL:.*]], label %[[CONT:.*]], label %[[MISS:.*]], !prof
|
||
|
// CHECK: [[MISS]]:
|
||
|
// CHECK: call void @__ubsan_handle_dynamic_type_cache_miss_abort
|
||
|
// CHECK: [[CONT]]:
|
||
|
T &r = static_cast<T &>(s);
|
||
|
}
|