Hello Zachary, It looks like this commit added broken tests on one of our builders: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/19508
. . . Failing Tests (2): LLVM-Unit :: ADT/./ADTTests.exe/HashingTest.HashCombineRangeGoldenTest Clang :: CodeGenCXX/catch-undef-behavior.cpp Please have a look? The builder was already red and did not send notifications on this. Thanks Galina On Thu, Aug 30, 2018 at 1:54 PM Zachary Turner via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: zturner > Date: Thu Aug 30 13:53:11 2018 > New Revision: 341117 > > URL: http://llvm.org/viewvc/llvm-project?rev=341117&view=rev > Log: > [MS ABI] Fix mangling issue with dynamic initializer stubs. > > There are two types of dynamic initializer stubs. There's > > `dynamic initializer for 'x''(void) > > and > > `dynamic initializer for `static Foo::Bar StaticDataMember''(void) > > The second case is disambiguated from the first by the presence of > a ? after the operator code. So the first will appear something like > ?__E<name> while the second will appear something like ?__E?<name>. > clang-cl was mangling these both the same though. This patch > matches behavior with cl. > > Differential Revision: https://reviews.llvm.org/D51500 > > Modified: > cfe/trunk/lib/AST/MicrosoftMangle.cpp > cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp > cfe/trunk/test/CodeGenCXX/pragma-init_seg.cpp > > Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=341117&r1=341116&r2=341117&view=diff > > ============================================================================== > --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original) > +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Thu Aug 30 13:53:11 2018 > @@ -3217,10 +3217,13 @@ void MicrosoftMangleContextImpl::mangleI > msvc_hashing_ostream MHO(Out); > MicrosoftCXXNameMangler Mangler(*this, MHO); > Mangler.getStream() << "??__" << CharCode; > - Mangler.mangleName(D); > if (D->isStaticDataMember()) { > + Mangler.getStream() << '?'; > + Mangler.mangleName(D); > Mangler.mangleVariableEncoding(D); > - Mangler.getStream() << '@'; > + Mangler.getStream() << "@@"; > + } else { > + Mangler.mangleName(D); > } > // This is the function class mangling. These stubs are global, > non-variadic, > // cdecl functions that return void and take no args. > > Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp?rev=341117&r1=341116&r2=341117&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp > (original) > +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp Thu > Aug 30 13:53:11 2018 > @@ -3,8 +3,8 @@ > // CHECK: @llvm.global_ctors = appending global [5 x { i32, void ()*, i8* > }] [ > // CHECK: { i32, void ()*, i8* } { i32 65535, void ()* > @"??__Eselectany1@@YAXXZ", > i8* getelementptr inbounds (%struct.S, %struct.S* @"?selectany1@@3US@@A", > i32 0, i32 0) }, > // CHECK: { i32, void ()*, i8* } { i32 65535, void ()* > @"??__Eselectany2@@YAXXZ", > i8* getelementptr inbounds (%struct.S, %struct.S* @"?selectany2@@3US@@A", > i32 0, i32 0) }, > -// CHECK: { i32, void ()*, i8* } { i32 65535, void ()* @"??__Es@ > ?$ExportedTemplate@H@@2US@@A@YAXXZ", i8* getelementptr inbounds > (%struct.S, %struct.S* @"?s@?$ExportedTemplate@H@@2US@@A", i32 0, i32 0) > }, > -// CHECK: { i32, void ()*, i8* } { i32 65535, void ()* @"??__Efoo@?$B@H > @@2VA@@A@YAXXZ", i8* bitcast (%class.A* @"?foo@?$B@H@@2VA@@A" to i8*) }, > +// CHECK: { i32, void ()*, i8* } { i32 65535, void ()* @"??__E?s@ > ?$ExportedTemplate@H@@2US@@A@@YAXXZ", i8* getelementptr inbounds > (%struct.S, %struct.S* @"?s@?$ExportedTemplate@H@@2US@@A", i32 0, i32 0) > }, > +// CHECK: { i32, void ()*, i8* } { i32 65535, void ()* @"??__E?foo@?$B@H > @@2VA@@A@@YAXXZ", i8* bitcast (%class.A* @"?foo@?$B@H@@2VA@@A" to i8*) }, > // CHECK: { i32, void ()*, i8* } { i32 65535, void ()* > @_GLOBAL__sub_I_microsoft_abi_static_initializers.cpp, i8* null } > // CHECK: ] > > @@ -231,18 +231,18 @@ void force_usage() { > DynamicDLLImportInitVSMangling::switch_test3(); > } > > -// CHECK: define linkonce_odr dso_local void @"??__Efoo@?$B@H@@2VA@ > @A@YAXXZ"() {{.*}} comdat > +// CHECK: define linkonce_odr dso_local void > @"??__E?foo@?$B@H@@2VA@@A@@YAXXZ"() > {{.*}} comdat > // CHECK-NOT: and > // CHECK-NOT: ?_Bfoo@ > // CHECK: call x86_thiscallcc %class.A* @"??0A@@QAE@XZ" > -// CHECK: call i32 @atexit(void ()* @"??__Ffoo@?$B@H@@2VA@@A@YAXXZ") > +// CHECK: call i32 @atexit(void ()* @"??__F?foo@?$B@H@@2VA@@A@@YAXXZ") > // CHECK: ret void > > // CHECK: define linkonce_odr dso_local x86_thiscallcc %class.A* @"??0A@ > @QAE@XZ"({{.*}}) {{.*}} comdat > > // CHECK: define linkonce_odr dso_local x86_thiscallcc void @"??1A@ > @QAE@XZ"({{.*}}) {{.*}} comdat > > -// CHECK: define internal void @"??__Ffoo@?$B@H@@2VA@@A@YAXXZ" > +// CHECK: define internal void @"??__F?foo@?$B@H@@2VA@@A@@YAXXZ" > // CHECK: call x86_thiscallcc void @"??1A@@QAE@XZ"{{.*}}foo > // CHECK: ret void > > > Modified: cfe/trunk/test/CodeGenCXX/pragma-init_seg.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pragma-init_seg.cpp?rev=341117&r1=341116&r2=341117&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/pragma-init_seg.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/pragma-init_seg.cpp Thu Aug 30 13:53:11 2018 > @@ -44,7 +44,7 @@ template <typename T> struct A { static > template <typename T> const int A<T>::x = f(); > template struct A<int>; > // CHECK: @"?x@?$A@H@explicit_template_instantiation@@2HB" = weak_odr > dso_local global i32 0, comdat, align 4 > -// CHECK: @__cxx_init_fn_ptr.4 = private constant void ()* @"??__Ex@?$A@H > @explicit_template_instantiation@@2HB@YAXXZ", section ".asdf", > comdat($"?x@?$A@H@explicit_template_instantiation@@2HB") > +// CHECK: @__cxx_init_fn_ptr.4 = private constant void ()* @"??__E?x@ > ?$A@H@explicit_template_instantiation@@2HB@@YAXXZ", section ".asdf", > comdat($"?x@?$A@H@explicit_template_instantiation@@2HB") > } > > namespace implicit_template_instantiation { > @@ -52,7 +52,7 @@ template <typename T> struct A { static > template <typename T> const int A<T>::x = f(); > int g() { return A<int>::x; } > // CHECK: @"?x@?$A@H@implicit_template_instantiation@@2HB" = > linkonce_odr dso_local global i32 0, comdat, align 4 > -// CHECK: @__cxx_init_fn_ptr.5 = private constant void ()* @"??__Ex@?$A@H > @implicit_template_instantiation@@2HB@YAXXZ", section ".asdf", > comdat($"?x@?$A@H@implicit_template_instantiation@@2HB") > +// CHECK: @__cxx_init_fn_ptr.5 = private constant void ()* @"??__E?x@ > ?$A@H@implicit_template_instantiation@@2HB@@YAXXZ", section ".asdf", > comdat($"?x@?$A@H@implicit_template_instantiation@@2HB") > } > > // ... and here's where we emitted user level ctors. > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits