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