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