Are we sure it was my commit? Because this seems like a very unusual failure given the nature of the commit. I'll try to reproduce it locally and report back.
On Fri, Aug 31, 2018 at 11:49 AM Galina Kistanova <gkistan...@gmail.com> wrote: > 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