From 5f38367c72fcc9affe10f5f6e179021e62c11b40 Mon Sep 17 00:00:00 2001 From: Will Wilson Date: Wed, 5 Nov 2014 13:54:21 +0000 Subject: [PATCH] MS ABI: Correctly mangle CV qualifiers from typedefs llvm-svn: 221344 --- clang/lib/AST/MicrosoftMangle.cpp | 2 +- clang/test/CodeGenCXX/mangle-ms.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index ca16db4..9fedcf5 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -441,7 +441,7 @@ void MicrosoftCXXNameMangler::mangleVariableEncoding(const VarDecl *VD) { mangleQualifiers(Ty.getQualifiers(), false); } else { mangleType(Ty, SR, QMM_Drop); - mangleQualifiers(Ty.getLocalQualifiers(), false); + mangleQualifiers(Ty.getQualifiers(), false); } } diff --git a/clang/test/CodeGenCXX/mangle-ms.cpp b/clang/test/CodeGenCXX/mangle-ms.cpp index bf61d8b..662278b 100644 --- a/clang/test/CodeGenCXX/mangle-ms.cpp +++ b/clang/test/CodeGenCXX/mangle-ms.cpp @@ -117,6 +117,19 @@ const volatile char foo2::*k; int (foo2::*l)(int); // CHECK-DAG: @"\01?l@@3P8foo@@AEHH@ZQ1@" +// Ensure typedef CV qualifiers are mangled correctly +typedef const int cInt; +typedef volatile int vInt; +typedef const volatile int cvInt; + +extern cInt g_cInt = 1; +vInt g_vInt = 2; +cvInt g_cvInt = 3; + +// CHECK-DAG: @"\01?g_cInt@@3HB" +// CHECK-DAG: @"\01?g_vInt@@3HC" +// CHECK-DAG: @"\01?g_cvInt@@3HD" + // Static functions are mangled, too. // Also make sure calling conventions, arglists, and throw specs work. static void __stdcall alpha(float a, double b) throw() {} -- 2.7.4