| // RUN: %clang_cc1 -emit-llvm -fms-extensions %s -triple=x86_64-pc-windows-msvc -o - \ | |
| // RUN: | FileCheck %s --implicit-check-not="@llvm.used.1" | |
| // The __empty_global_delete fallback is marked used so it is always emitted. | |
| // It must join the single llvm.used that CodeGenModule emits at end-of-TU: if | |
| // it creates its own llvm.used first, the one holding __attribute__((used)) | |
| // globals gets renamed to llvm.used.1, which LLVM ignores. | |
| struct S { virtual ~S(); }; | |
| S::~S() {} | |
| void del(S *s) { ::delete s; } | |
| __attribute__((used)) static void keep_me() {} | |
| // CHECK: @llvm.used = appending global | |
| // CHECK-SAME: @"?__empty_global_delete@@YAXPEAX_K@Z" | |
| // CHECK-SAME: @"?keep_me@@YAXXZ" |