Author: Melanie Blower Date: 2020-11-07T07:40:24-08:00 New Revision: c511963d5adb1a8ca16adabf4b49f8d013a66785
URL: https://github.com/llvm/llvm-project/commit/c511963d5adb1a8ca16adabf4b49f8d013a66785 DIFF: https://github.com/llvm/llvm-project/commit/c511963d5adb1a8ca16adabf4b49f8d013a66785.diff LOG: [clang] Fix length threshold for MicrosoftMangle md5 hash Reviewers: rnk, dblaikie Differential Revision: https://reviews.llvm.org/D90714 Added: Modified: clang/lib/AST/MicrosoftMangle.cpp clang/test/CodeGenCXX/mangle-ms-md5.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index 3a263d487b75..de03a88d7612 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -50,7 +50,7 @@ struct msvc_hashing_ostream : public llvm::raw_svector_ostream { bool StartsWithEscape = MangledName.startswith("\01"); if (StartsWithEscape) MangledName = MangledName.drop_front(1); - if (MangledName.size() <= 4096) { + if (MangledName.size() < 4096) { OS << str(); return; } diff --git a/clang/test/CodeGenCXX/mangle-ms-md5.cpp b/clang/test/CodeGenCXX/mangle-ms-md5.cpp index 52a29324af05..bd7cef2f099b 100644 --- a/clang/test/CodeGenCXX/mangle-ms-md5.cpp +++ b/clang/test/CodeGenCXX/mangle-ms-md5.cpp @@ -49,3 +49,25 @@ void g() { // HAVECTOR: "_CT??@c14087f0ec22b387aea7c59083f4f546@??@4ef4f8979c81f9d2224b32bf327e6bdf@4" } #endif + +// Verify the threshold where md5 mangling kicks in +// Test an ident with 4088 characters, pre-hash, MangleName.size() is 4095 +#define X4088(X) \ + C2(C2( \ + C4(X, X4(X), X4(X), X8(X)), \ + C4(X8(X), X32(X), X64(X), X128(X))), \ + C4(X256(X), X512(X), X1024(X), X2048(X))) +#define Z4088 X4088(z) +// Use initialization to verify mangled name association in the il +int X4088(z) = 1515; +// CHECK-DAG: @"?{{z+}}@@3HA" = dso_local global i32 1515, align 4 + +// Test an ident with 4089 characters, pre-hash, MangleName.size() is 4096 +#define X4089(X) \ + C2(C2( \ + C4(X2(X), X4(X), X4(X), X8(X)), \ + C4(X8(X), X32(X), X64(X), X128(X))), \ + C4(X256(X), X512(X), X1024(X), X2048(X))) +// Use initialization to verify mangled name association in the il +int X4089(z) = 1717; +// CHECK-DAG: @"??@0269945400a3474730d6880df0967d8f@" = dso_local global i32 1717, align 4 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits