Author: Eli Friedman Date: 2025-06-03T16:22:30-07:00 New Revision: 12f8bf34c3e56f30bda11e0edd92b4ac5914ec47
URL: https://github.com/llvm/llvm-project/commit/12f8bf34c3e56f30bda11e0edd92b4ac5914ec47 DIFF: https://github.com/llvm/llvm-project/commit/12f8bf34c3e56f30bda11e0edd92b4ac5914ec47.diff LOG: [AArch64] Add MSVC-style mangling for SVE types. (#141887) No released version of MSVC supports these types, so make up a mangling that's unlikely to conflict, for now. Added: Modified: clang/lib/AST/MicrosoftMangle.cpp clang/test/CodeGenCXX/aarch64-mangle-sve-vectors-msvc.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index 290521a9bd531..d6339029a65c9 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -2828,6 +2828,13 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers, break; #include "clang/Basic/HLSLIntangibleTypes.def" +#define SVE_TYPE(Name, Id, SingletonId) \ + case BuiltinType::Id: \ + mangleArtificialTagType(TagTypeKind::Struct, #Name, {"__clang"}); \ + break; +#define SVE_SCALAR_TYPE(Name, MangledName, Id, SingletonId, Bits) +#include "clang/Basic/AArch64ACLETypes.def" + // Issue an error for any type not explicitly handled. default: Error(Range.getBegin(), "built-in type: ", diff --git a/clang/test/CodeGenCXX/aarch64-mangle-sve-vectors-msvc.cpp b/clang/test/CodeGenCXX/aarch64-mangle-sve-vectors-msvc.cpp index 435feec774ece..3ed75b9494c2a 100644 --- a/clang/test/CodeGenCXX/aarch64-mangle-sve-vectors-msvc.cpp +++ b/clang/test/CodeGenCXX/aarch64-mangle-sve-vectors-msvc.cpp @@ -1,7 +1,13 @@ -// RUN: not %clang_cc1 -triple aarch64-unknown-windows-msvc %s -emit-llvm \ -// RUN: -o - 2>&1 | FileCheck %s +// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc %s -emit-llvm \ +// RUN: -o - | FileCheck %s template<typename T> struct S {}; -// CHECK: cannot mangle this built-in type: __SVInt8_t yet +// CHECK: void @"?f1@@YAXU?$S@U__SVInt8_t@__clang@@@@@Z" void f1(S<__SVInt8_t>) {} +// CHECK: void @"?f2@@YAXU?$S@U__SVInt32_t@__clang@@@@@Z" +void f2(S<__SVInt32_t>) {} +// CHECK: void @"?f3@@YAXU?$S@U__SVBool_t@__clang@@@@@Z" +void f3(S<__SVBool_t>) {} +// CHECK: void @"?f4@@YAXU?$S@U__clang_svfloat64x4_t@__clang@@@@@Z" +void f4(S<__clang_svfloat64x4_t>) {} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits