From fed477dddae307654c917032bf7e3da38382cd47 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 21 Apr 2016 01:46:37 +0000 Subject: [PATCH] [modules] Make the tweak to avoid circular inclusion of emmintrin.h and xmmintrin.h a bit more directed. If for whatever reason modules are enabled but we textually include one of these headers, don't deploy the special case for modules. To make this work cleanly, extend __building_module to be defined even when modules is disabled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266945 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Headers/xmmintrin.h | 2 +- lib/Lex/PPMacroExpansion.cpp | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/lib/Headers/xmmintrin.h b/lib/Headers/xmmintrin.h index 2b3426099a..43f94229f1 100644 --- a/lib/Headers/xmmintrin.h +++ b/lib/Headers/xmmintrin.h @@ -1946,7 +1946,7 @@ do { \ #undef __DEFAULT_FN_ATTRS /* Ugly hack for backwards-compatibility (compatible with gcc) */ -#if defined(__SSE2__) && !__has_feature(modules) +#if defined(__SSE2__) && !__building_module(_Builtin_intrinsics) #include #endif diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index 77c8c7e6c5..0655c1f08e 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -330,18 +330,11 @@ void Preprocessor::RegisterBuiltinMacros() { Ident__is_identifier = RegisterBuiltinMacro(*this, "__is_identifier"); // Modules. - if (LangOpts.Modules) { - Ident__building_module = RegisterBuiltinMacro(*this, "__building_module"); - - // __MODULE__ - if (!LangOpts.CurrentModule.empty()) - Ident__MODULE__ = RegisterBuiltinMacro(*this, "__MODULE__"); - else - Ident__MODULE__ = nullptr; - } else { - Ident__building_module = nullptr; + Ident__building_module = RegisterBuiltinMacro(*this, "__building_module"); + if (!LangOpts.CurrentModule.empty()) + Ident__MODULE__ = RegisterBuiltinMacro(*this, "__MODULE__"); + else Ident__MODULE__ = nullptr; - } } /// isTrivialSingleTokenExpansion - Return true if MI, which has a single token -- 2.40.0