From fe781458d81de407fe8ca9999b06d34231e70210 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 17 Jun 2014 00:00:18 +0000 Subject: MS static locals mangling: don't count enum scopes We may not have the mangling for static locals vs. enums completely figured out, but at least for my simple test cases, enums should not increment the mangling number. Differential Revision: http://reviews.llvm.org/D4164 llvm-svn: 211078 --- .../microsoft-abi-static-initializers.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp') diff --git a/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp b/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp index 5666553f3a2..e96a5edd654 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp @@ -143,10 +143,31 @@ inline S &getS() { // init.end: // CHECK: ret %struct.S* @"\01?TheS@?1??getS@@YAAAUS@@XZ@4U2@A" +inline int enum_in_function() { + // CHECK-LABEL: define linkonce_odr i32 @"\01?enum_in_function@@YAHXZ"() + static enum e { foo, bar, baz } x; + // CHECK: @"\01?x@?1??enum_in_function@@YAHXZ@4W4e@?1??1@YAHXZ@A" + static int y; + // CHECK: @"\01?y@?1??enum_in_function@@YAHXZ@4HA" + return x + y; +}; + +struct T { + enum e { foo, bar, baz }; + int enum_in_struct() { + // CHECK-LABEL: define linkonce_odr x86_thiscallcc i32 @"\01?enum_in_struct@T@@QAEHXZ" + static int x; + // CHECK: @"\01?x@?1??enum_in_struct@T@@QAEHXZ@4HA" + return x++; + } +}; + void force_usage() { UnreachableStatic(); getS(); (void)B::foo; // (void) - force usage + enum_in_function(); + (void)&T::enum_in_struct; } // CHECK: define linkonce_odr void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() -- cgit v1.2.3