r210582 - Do not predefine __EXCEPTIONS in clang-cl (PR19977)

Alp Toker alp at nuanti.com
Tue Jun 10 14:12:15 PDT 2014


On 10/06/2014 23:46, Hans Wennborg wrote:
> Author: hans
> Date: Tue Jun 10 15:46:38 2014
> New Revision: 210582
>
> URL: http://llvm.org/viewvc/llvm-project?rev=210582&view=rev
> Log:
> Do not predefine __EXCEPTIONS in clang-cl (PR19977)
>
> Patch by Ehsan Akhgari! (Test tweak by me.)
>
> Differential Revision: http://reviews.llvm.org/D4065
>
> Added:
>      cfe/trunk/test/Frontend/exceptions.c
> Modified:
>      cfe/trunk/lib/Frontend/InitPreprocessor.cpp
>
> Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=210582&r1=210581&r2=210582&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Tue Jun 10 15:46:38 2014
> @@ -491,7 +491,7 @@ static void InitializePredefinedMacros(c
>       Builder.defineMacro("__BLOCKS__");
>     }
>   
> -  if (LangOpts.CXXExceptions)
> +  if (!LangOpts.MSVCCompat && LangOpts.CXXExceptions)
>       Builder.defineMacro("__EXCEPTIONS");
>     if (LangOpts.RTTI)
>       Builder.defineMacro("__GXX_RTTI");

It could be nice to go ahead and put the __GXX /__GNU etc. macros behind 
a GNUCompat LangOpt for consistency and self-documentation, even if 
that's just the inverse of MSVCCompat in practice.

Alp.


>
> Added: cfe/trunk/test/Frontend/exceptions.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/exceptions.c?rev=210582&view=auto
> ==============================================================================
> --- cfe/trunk/test/Frontend/exceptions.c (added)
> +++ cfe/trunk/test/Frontend/exceptions.c Tue Jun 10 15:46:38 2014
> @@ -0,0 +1,6 @@
> +// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -verify %s
> +// expected-no-diagnostics
> +
> +#if defined(__EXCEPTIONS)
> +#error __EXCEPTIONS should not be defined.
> +#endif
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

-- 
http://www.nuanti.com
the browser experts




More information about the cfe-commits mailing list