Author: majnemer Date: Thu May 19 13:15:53 2016 New Revision: 270089 URL: http://llvm.org/viewvc/llvm-project?rev=270089&view=rev Log: [MS ABI] Ignore transparent contexts when determining the effective context
We didn't skip over extern "C++" contexts, causing us to mangle things which don't need to be mangled. Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp cfe/trunk/test/CodeGenCXX/mangle-ms.cpp Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=270089&r1=270088&r2=270089&view=diff ============================================================================== --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original) +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Thu May 19 13:15:53 2016 @@ -94,7 +94,7 @@ static const DeclContext *getEffectiveDe return getEffectiveDeclContext(cast<Decl>(DC)); } - return DC; + return DC->getRedeclContext(); } static const DeclContext *getEffectiveParentContext(const DeclContext *DC) { Modified: cfe/trunk/test/CodeGenCXX/mangle-ms.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/mangle-ms.cpp?rev=270089&r1=270088&r2=270089&view=diff ============================================================================== --- cfe/trunk/test/CodeGenCXX/mangle-ms.cpp (original) +++ cfe/trunk/test/CodeGenCXX/mangle-ms.cpp Thu May 19 13:15:53 2016 @@ -4,6 +4,11 @@ int a; // CHECK-DAG: @"\01?a@@3HA" +extern "C++" { +static int __attribute__((used)) ignore_transparent_context; +// CHECK-DAG: @ignore_transparent_context +} + namespace N { int b; // CHECK-DAG: @"\01?b@N@@3HA" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits