r270089 - [MS ABI] Ignore transparent contexts when determining the effective context

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Thu May 19 19:33:15 PDT 2016


On Thu, May 19, 2016 at 11:15 AM, David Majnemer via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> 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.
>

Hah, I guess I should have checked MS ABI when I fixed the same bug for
Itanium a week or two ago :)


> 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 at N@@3HA"
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160519/36dc8d98/attachment-0001.html>


More information about the cfe-commits mailing list