llvm-project/clang/test/CodeGenCXX/dynamic-cast-dead.cpp
Yingwei Zheng a3d8b78333
[Clang][CodeGen] Mark __dynamic_cast as willreturn (#80409)
According to the C++ standard, `dynamic_cast` of pointers either returns
a pointer (7.6.1.7) or results in undefined behavior (11.9.5). This
patch marks `__dynamic_cast` as `willreturn` to remove unused calls.

Fixes #77606.
2024-02-04 11:31:50 +08:00

9 lines
273 B
C++

// RUN: %clang_cc1 -I%S %s -O3 -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions -std=c++11 -o - | FileCheck %s
struct A { virtual ~A(); };
struct B : A { };
void foo(A* a) {
// CHECK-NOT: call {{.*}} @__dynamic_cast
B* b = dynamic_cast<B*>(a);
}