diff options
author | Hans Wennborg <hans@hanshq.net> | 2014-06-17 00:09:05 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2014-06-17 00:09:05 +0000 |
commit | 852c346ad24334f6e65b57331cb43f651219d5d8 (patch) | |
tree | 72d530389cfc75ee68bbf49bee599a68f3469cdf /clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp | |
parent | fe781458d81de407fe8ca9999b06d34231e70210 (diff) | |
download | bcm5719-llvm-852c346ad24334f6e65b57331cb43f651219d5d8.tar.gz bcm5719-llvm-852c346ad24334f6e65b57331cb43f651219d5d8.zip |
MS static locals mangling: don't double-increment mangling number for switches
Differential Revision: http://reviews.llvm.org/D4165
llvm-svn: 211079
Diffstat (limited to 'clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp b/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp index e96a5edd654..b353d0c9c2c 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp @@ -162,12 +162,41 @@ struct T { } }; +inline int switch_test(int x) { + // CHECK-LABEL: define linkonce_odr i32 @"\01?switch_test@@YAHH@Z"(i32 %x) + switch (x) { + static int a; + // CHECK: @"\01?a@?3??switch_test@@YAHH@Z@4HA" + case 0: + a++; + return 1; + case 1: + static int b; + // CHECK: @"\01?b@?3??switch_test@@YAHH@Z@4HA" + return b++; + case 2: { + static int c; + // CHECK: @"\01?c@?4??switch_test@@YAHH@Z@4HA" + return b + c++; + } + }; +} + +int f(); +inline void switch_test2() { + // CHECK-LABEL: define linkonce_odr void @"\01?switch_test2@@YAXXZ"() + // CHECK: @"\01?x@?2??switch_test2@@YAXXZ@4HA" + switch (1) default: static int x = f(); +} + void force_usage() { UnreachableStatic(); getS(); (void)B<int>::foo; // (void) - force usage enum_in_function(); (void)&T::enum_in_struct; + switch_test(1); + switch_test2(); } // CHECK: define linkonce_odr void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() |