llvm-project/clang/lib/Lex
Alex Lorenz d8ec431143 [Preprocessor] Implement __is_target_{arch|vendor|os|environment} function-like
builtin macros

This patch implements the __is_target_arch, __is_target_vendor, __is_target_os,
and __is_target_environment Clang preprocessor extensions that were proposed by
@compnerd in Bob's cfe-dev post:
http://lists.llvm.org/pipermail/cfe-dev/2017-November/056166.html.

These macros can be used to examine the components of the target triple at
compile time. A has_builtin(is_target_???) preprocessor check can be used to
check for their availability.

__is_target_arch allows you to check if an arch is specified without worring
about a specific subarch, e.g.

__is_target_arch(arm) returns 1 for the target arch "armv7"
__is_target_arch(armv7) returns 1 for the target arch "armv7"
__is_target_arch(armv6) returns 0 for the target arch "armv7"

__is_target_vendor and __is_target_environment match the specific vendor
or environment. __is_target_os matches the specific OS, but
__is_target_os(darwin) will match any Darwin-based OS. "Unknown" can be used
to test if the triple's component is specified.

rdar://35753116

Differential Revision: https://reviews.llvm.org/D41087

llvm-svn: 320734
2017-12-14 19:22:02 +00:00
..
CMakeLists.txt
HeaderMap.cpp Use StringRef for MemoryBuffer identifier API (NFC) 2016-10-01 16:38:28 +00:00
HeaderSearch.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-06 23:18:41 +00:00
Lexer.cpp Warn if we find a Unicode homoglyph for a symbol in an identifier. 2017-12-14 13:15:08 +00:00
LiteralSupport.cpp Now that C++17 is official (https://www.iso.org/standard/68564.html), start changing the C++1z terminology over to C++17. NFC intended, these are all mechanical changes. 2017-12-04 20:27:34 +00:00
MacroArgs.cpp [c++2a] Implement P0306 __VA_OPT__ (Comma omission and comma deletion) 2017-10-15 01:26:26 +00:00
MacroInfo.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-04 23:16:21 +00:00
ModuleMap.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-06 23:18:41 +00:00
PPCaching.cpp [Preprocessor] Fix incorrect token caching that occurs when lexing _Pragma 2017-02-24 17:45:16 +00:00
PPCallbacks.cpp
PPConditionalDirectiveRecord.cpp
PPDirectives.cpp [preamble] Also record the "skipping" state of the preprocessor 2017-11-03 09:40:07 +00:00
PPExpressions.cpp Keep the IdentifierInfo in the Token for alternative operator keyword 2017-07-14 09:23:40 +00:00
PPLexerChange.cpp Another attempt to fix warning discovered by r313487. [-Wunused-lambda-capture] 2017-09-18 08:26:01 +00:00
PPMacroExpansion.cpp [Preprocessor] Implement __is_target_{arch|vendor|os|environment} function-like 2017-12-14 19:22:02 +00:00
PTHLexer.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-06 23:18:41 +00:00
Pragma.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-08 22:39:26 +00:00
PreprocessingRecord.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-08 22:39:26 +00:00
Preprocessor.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-04 23:16:21 +00:00
PreprocessorLexer.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-04 23:16:21 +00:00
ScratchBuffer.cpp PR33902: Invalidate line number cache when adding more text to existing buffer. 2017-07-30 06:31:29 +00:00
TokenConcatenation.cpp Now that C++17 is official (https://www.iso.org/standard/68564.html), start changing the C++1z terminology over to C++17. NFC intended, these are all mechanical changes. 2017-12-04 20:27:34 +00:00
TokenLexer.cpp [Lex] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-08 22:39:26 +00:00
UnicodeCharSets.h