llvm-project/clang/test/CodeGenCXX/wasm-sanitize-vptr.cpp
Thomas Lively 5458cd4027 [WebAssembly] Support VPtr sanitizer for Emscripten
Summary:
After https://github.com/emscripten-core/emscripten/pull/8651, Emscripten
supports the full UBSan runtime. This includes the VPtr sanitizer.

This diff allows clang to generate code that uses the VPtr sanitizer for
Emscripten.

Patch by Guanzhong Chen

Reviewers: tlively, aheejin

Reviewed By: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D62559

llvm-svn: 362004
2019-05-29 18:31:50 +00:00

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);
}