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