summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-12-15 19:58:38 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-12-15 19:58:38 +0000
commit268759e58f47f019112288de6e3a3c1aba20a071 (patch)
treeea71f4a657501dbe9b2b696fef29726389dae2e3
parent72546fe87b0d3c8c9d8035a16cf913ca84554559 (diff)
downloadbcm5719-llvm-268759e58f47f019112288de6e3a3c1aba20a071.tar.gz
bcm5719-llvm-268759e58f47f019112288de6e3a3c1aba20a071.zip
__is_target_arch: Check the arch and subarch instead of the arch name
This ensures that when compiling for "arm64" __is_target_arch will succeed for both "arm64" and "aarch64". Thanks to Bob Wilson who pointed this out! llvm-svn: 320853
-rw-r--r--clang/lib/Lex/PPMacroExpansion.cpp6
-rw-r--r--clang/test/Preprocessor/is_target_arm64.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index 3d72006bad4..9b062643b9b 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -1615,9 +1615,9 @@ static bool isTargetArch(const TargetInfo &TI, const IdentifierInfo *II) {
}
// Check the parsed arch when it has no sub arch to allow Clang to
// match thumb to thumbv7 but to prohibit matching thumbv6 to thumbv7.
- return (Arch.getSubArch() == llvm::Triple::NoSubArch &&
- Arch.getArch() == TT.getArch()) ||
- Arch.getArchName() == TT.getArchName();
+ return (Arch.getSubArch() == llvm::Triple::NoSubArch ||
+ Arch.getSubArch() == TT.getSubArch()) &&
+ Arch.getArch() == TT.getArch();
}
/// Implements the __is_target_vendor builtin macro.
diff --git a/clang/test/Preprocessor/is_target_arm64.c b/clang/test/Preprocessor/is_target_arm64.c
new file mode 100644
index 00000000000..87ebe94d18e
--- /dev/null
+++ b/clang/test/Preprocessor/is_target_arm64.c
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -fsyntax-only -triple arm64-apple-ios11 -verify %s
+// expected-no-diagnostics
+
+#if !__is_target_arch(arm64) || !__is_target_arch(aarch64)
+ #error "mismatching arch"
+#endif
+
+#if __is_target_arch(aarch64_be)
+ #error "mismatching arch"
+#endif
OpenPOWER on IntegriCloud