It seems the generated MS mangling differs between 32- and 64-bit, and the test expects the latter.
Let's revert in the meantime.. r345380 On Fri, Oct 26, 2018 at 1:10 PM, Peter Smith via cfe-commits <cfe-commits@lists.llvm.org> wrote: > This commit, specifically the changes made to > CodeGenCXX/cxx2a-three-way-comparison.cpp, are failing on all the Arm > and AArch64 builders that run check-clang and some of the other > non-X86 builders as well like S390 and PPC. > > It seems to be the // RUN: not %clang_cc1 -std=c++2a -emit-llvm %s -o > - -triple %ms_abi_triple 2>&1 | FileCheck %s --check-prefix=MSABI > that is failing. I originally thought that this was due to our > builders not having the X86 target configured but it seems to be > reproducible on an Arm v7 machine (Cortex-A72) with the X86 backend > included. The triple expands to -triple i686-pc-windows-msvc > > The failure appears to be common across all builders: > /home/buildbots/ppc64le-clang-test/clang-ppc64le/llvm/tools/clang/test/CodeGenCXX/cxx2a-three-way-comparison.cpp:11:11: > error: MSABI: expected string not found in input > // MSABI: define {{.*}}@"??__MA@@QEAAXH@Z"( > ^ > <stdin>:1:1: note: scanning from here > ; ModuleID = > '/home/buildbots/ppc64le-clang-test/clang-ppc64le/llvm/tools/clang/test/CodeGenCXX/cxx2a-three-way-comparison.cpp' > ^ > <stdin>:9:23: note: possible intended match here > define dso_local x86_thiscallcc void @"??__MA@@QAEXH@Z"(%struct.A* > %this, i32) #0 align 2 { > > Could you take a look? > > Thanks in advance > > Peter > > Links to builders: > http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick > http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick > http://lab.llvm.org:8011/builders/clang-s390x-linux > http://lab.llvm.org:8011/builders/clang-ppc64le-linux > On Fri, 26 Oct 2018 at 00:23, Richard Smith via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> >> I've already pointed Zach at this and I think he's going to handle it. >> >> On Thu, 25 Oct 2018 at 16:00, Nico Weber via cfe-commits >> <cfe-commits@lists.llvm.org> wrote: >>> >>> Could you update the demangler too? >>> >>> On Thu, Oct 25, 2018 at 6:53 PM Richard Smith via cfe-commits >>> <cfe-commits@lists.llvm.org> wrote: >>>> >>>> Author: rsmith >>>> Date: Thu Oct 25 15:51:16 2018 >>>> New Revision: 345330 >>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=345330&view=rev >>>> Log: >>>> Add MS ABI mangling for operator<=>. >>>> >>>> Thanks to Cameron DaCamara at Microsoft for letting us know what their >>>> chosen mangling is here! >>>> >>>> Added: >>>> cfe/trunk/test/CodeGenCXX/mangle-ms-cxx2a.cpp >>>> Modified: >>>> cfe/trunk/lib/AST/MicrosoftMangle.cpp >>>> cfe/trunk/test/CodeGenCXX/cxx2a-three-way-comparison.cpp >>>> >>>> Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=345330&r1=345329&r2=345330&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original) >>>> +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Thu Oct 25 15:51:16 2018 >>>> @@ -1240,15 +1240,8 @@ void MicrosoftCXXNameMangler::mangleOper >>>> case OO_Array_Delete: Out << "?_V"; break; >>>> // <operator-name> ::= ?__L # co_await >>>> case OO_Coawait: Out << "?__L"; break; >>>> - >>>> - case OO_Spaceship: { >>>> - // FIXME: Once MS picks a mangling, use it. >>>> - DiagnosticsEngine &Diags = Context.getDiags(); >>>> - unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, >>>> - "cannot mangle this three-way comparison operator yet"); >>>> - Diags.Report(Loc, DiagID); >>>> - break; >>>> - } >>>> + // <operator-name> ::= ?__M # <=> >>>> + case OO_Spaceship: Out << "?__M"; break; >>>> >>>> case OO_Conditional: { >>>> DiagnosticsEngine &Diags = Context.getDiags(); >>>> >>>> Modified: cfe/trunk/test/CodeGenCXX/cxx2a-three-way-comparison.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx2a-three-way-comparison.cpp?rev=345330&r1=345329&r2=345330&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/test/CodeGenCXX/cxx2a-three-way-comparison.cpp (original) >>>> +++ cfe/trunk/test/CodeGenCXX/cxx2a-three-way-comparison.cpp Thu Oct 25 >>>> 15:51:16 2018 >>>> @@ -1,24 +1,28 @@ >>>> -// RUN: %clang_cc1 -std=c++2a -emit-llvm %s -o - -triple >>>> %itanium_abi_triple | FileCheck %s --check-prefix=ITANIUM >>>> -// RUN: not %clang_cc1 -std=c++2a -emit-llvm %s -o - -triple >>>> %ms_abi_triple 2>&1 | FileCheck %s --check-prefix=MSABI >>>> +// RUN: %clang_cc1 -std=c++2a -emit-llvm %s -o - -triple >>>> %itanium_abi_triple | FileCheck %s --check-prefixes=CHECK,ITANIUM >>>> +// RUN: %clang_cc1 -std=c++2a -emit-llvm %s -o - -triple %ms_abi_triple | >>>> FileCheck %s --check-prefixes=CHECK,MSABI >>>> // RUN: not %clang_cc1 -std=c++2a -emit-llvm %s -o - -triple >>>> %itanium_abi_triple -DBUILTIN 2>&1 | FileCheck %s --check-prefix=BUILTIN >>>> -// MSABI: cannot mangle this three-way comparison operator yet >>>> +// RUN: not %clang_cc1 -std=c++2a -emit-llvm %s -o - -triple >>>> %ms_abi_triple -DBUILTIN 2>&1 | FileCheck %s --check-prefix=BUILTIN >>>> >>>> struct A { >>>> void operator<=>(int); >>>> }; >>>> >>>> // ITANIUM: define {{.*}}@_ZN1AssEi( >>>> +// MSABI: define {{.*}}@"??__MA@@QEAAXH@Z"( >>>> void A::operator<=>(int) {} >>>> >>>> // ITANIUM: define {{.*}}@_Zssi1A( >>>> +// MSABI: define {{.*}}@"??__M@YAXHUA@@@Z"( >>>> void operator<=>(int, A) {} >>>> >>>> int operator<=>(A, A); >>>> >>>> // ITANIUM: define {{.*}}_Z1f1A( >>>> +// MSABI: define {{.*}}"?f@@YAHUA@@@Z"( >>>> int f(A a) { >>>> // ITANIUM: %[[RET:.*]] = call {{.*}}_Zss1AS_( >>>> - // ITANIUM: ret i32 %[[RET]] >>>> + // MSABI: %[[RET:.*]] = call {{.*}}"??__M@YAHUA@@0@Z"( >>>> + // CHECK: ret i32 %[[RET]] >>>> return a <=> a; >>>> } >>>> >>>> >>>> Added: cfe/trunk/test/CodeGenCXX/mangle-ms-cxx2a.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/mangle-ms-cxx2a.cpp?rev=345330&view=auto >>>> ============================================================================== >>>> --- cfe/trunk/test/CodeGenCXX/mangle-ms-cxx2a.cpp (added) >>>> +++ cfe/trunk/test/CodeGenCXX/mangle-ms-cxx2a.cpp Thu Oct 25 15:51:16 2018 >>>> @@ -0,0 +1,6 @@ >>>> +// RUN: %clang_cc1 -std=c++2a -fms-extensions -emit-llvm %s -o - >>>> -triple=i386-pc-win32 -fms-compatibility-version=19.00 | FileCheck %s >>>> + >>>> +struct A {}; >>>> + >>>> +// CHECK-DAG: define {{.*}} @"??__M@YAXUA@@0@Z" >>>> +void operator<=>(A, A) {} >>>> >>>> >>>> _______________________________________________ >>>> 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 >> >> _______________________________________________ >> 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits