From 35bbf1cf8a2ec3bf2526f1982d97a9f6a5aec347 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 10 Jun 2014 20:46:38 +0000 Subject: [PATCH] Do not predefine __EXCEPTIONS in clang-cl (PR19977) Patch by Ehsan Akhgari! (Test tweak by me.) Differential Revision: http://reviews.llvm.org/D4065 llvm-svn: 210582 --- clang/lib/Frontend/InitPreprocessor.cpp | 2 +- clang/test/Frontend/exceptions.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 clang/test/Frontend/exceptions.c diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index fb52eb4..dbb59b4 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -491,7 +491,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__BLOCKS__"); } - if (LangOpts.CXXExceptions) + if (!LangOpts.MSVCCompat && LangOpts.CXXExceptions) Builder.defineMacro("__EXCEPTIONS"); if (LangOpts.RTTI) Builder.defineMacro("__GXX_RTTI"); diff --git a/clang/test/Frontend/exceptions.c b/clang/test/Frontend/exceptions.c new file mode 100644 index 0000000..4bbaaa3 --- /dev/null +++ b/clang/test/Frontend/exceptions.c @@ -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 -- 2.7.4