Stephen Hines | 176edba | 2014-12-01 14:53:08 -0800 | [diff] [blame] | 1 | // RUN: %clang_cc1 -emit-llvm -triple=i386-pc-win32 -fms-compatibility %s -o - | FileCheck %s |
| 2 | |
| 3 | enum Enum { zero, one, two }; |
| 4 | |
| 5 | struct __declspec(dllexport) S { |
| 6 | // In MS compatibility mode, this counts as a definition. |
| 7 | // Since it is exported, it must be emitted even if it's unreferenced. |
| 8 | static const short x = 42; |
| 9 | |
| 10 | // This works for enums too. |
| 11 | static const Enum y = two; |
| 12 | |
| 13 | struct NonExported { |
| 14 | // dllexport is not inherited by this nested class. |
| 15 | // Since z is not referenced, it should not be emitted. |
| 16 | static const int z = 42; |
| 17 | }; |
| 18 | }; |
| 19 | |
Stephen Hines | 0e2c34f | 2015-03-23 12:09:02 -0700 | [diff] [blame] | 20 | // CHECK: @"\01?x@S@@2FB" = weak_odr dllexport constant i16 42, comdat, align 2 |
| 21 | // CHECK: @"\01?y@S@@2W4Enum@@B" = weak_odr dllexport constant i32 2, comdat, align 4 |
Stephen Hines | 176edba | 2014-12-01 14:53:08 -0800 | [diff] [blame] | 22 | // CHECK-NOT: NonExported |