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 |
17 |