Reid Kleckner | 2810325 | 2018-03-16 22:20:57 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -std=c++11 -triple x86_64-windows-msvc %s -emit-llvm -o - | FileCheck %s |
2 | |||||
3 | // If we de-virtualize ~Foo, we still need to call ??1Foo, not ??_DFoo. | ||||
4 | |||||
5 | struct Base { | ||||
6 | virtual ~Base(); | ||||
7 | }; | ||||
8 | struct Foo final : Base { | ||||
9 | }; | ||||
10 | void f(Foo *p) { | ||||
11 | p->~Foo(); | ||||
12 | } | ||||
13 | |||||
14 | // CHECK-LABEL: define{{.*}} void @"?f@@YAXPEAUFoo@@@Z"(%struct.Foo* %p) | ||||
15 | // CHECK: call void @"??1Foo@@UEAA@XZ" | ||||
16 | // CHECK: ret void |