r320854 - __is_target_environment: Check the environment after parsing it

Alex Lorenz via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 15 12:07:53 PST 2017


Author: arphaman
Date: Fri Dec 15 12:07:53 2017
New Revision: 320854

URL: http://llvm.org/viewvc/llvm-project?rev=320854&view=rev
Log:
__is_target_environment: Check the environment after parsing it

This ensures that target triples with environment versions can still work with
__is_target_environment.

Added:
    cfe/trunk/test/Preprocessor/is_target_environment_version.c
Modified:
    cfe/trunk/lib/Lex/PPMacroExpansion.cpp

Modified: cfe/trunk/lib/Lex/PPMacroExpansion.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPMacroExpansion.cpp?rev=320854&r1=320853&r2=320854&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/PPMacroExpansion.cpp (original)
+++ cfe/trunk/lib/Lex/PPMacroExpansion.cpp Fri Dec 15 12:07:53 2017
@@ -1643,10 +1643,9 @@ static bool isTargetOS(const TargetInfo
 /// Implements the __is_target_environment builtin macro.
 static bool isTargetEnvironment(const TargetInfo &TI,
                                 const IdentifierInfo *II) {
-  StringRef EnvName = TI.getTriple().getEnvironmentName();
-  if (EnvName.empty())
-    EnvName = "unknown";
-  return EnvName.equals_lower(II->getName());
+  std::string EnvName = (llvm::Twine("---") + II->getName().lower()).str();
+  llvm::Triple Env(EnvName);
+  return TI.getTriple().getEnvironment() == Env.getEnvironment();
 }
 
 /// ExpandBuiltinMacro - If an identifier token is read that is to be expanded

Added: cfe/trunk/test/Preprocessor/is_target_environment_version.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/is_target_environment_version.c?rev=320854&view=auto
==============================================================================
--- cfe/trunk/test/Preprocessor/is_target_environment_version.c (added)
+++ cfe/trunk/test/Preprocessor/is_target_environment_version.c Fri Dec 15 12:07:53 2017
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -fsyntax-only -triple x86_64-pc-windows-msvc18.0.0 -verify %s
+// expected-no-diagnostics
+
+#if !__is_target_environment(msvc)
+  #error "mismatching environment"
+#endif




More information about the cfe-commits mailing list