From: Richard Smith Date: Thu, 21 Apr 2016 01:46:37 +0000 (+0000) Subject: [modules] Make the tweak to avoid circular inclusion of emmintrin.h and X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fed477dddae307654c917032bf7e3da38382cd47;p=clang [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 --- 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