summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorWeiming Zhao <weimingz@codeaurora.org>2014-01-22 18:42:13 +0000
committerWeiming Zhao <weimingz@codeaurora.org>2014-01-22 18:42:13 +0000
commitfb5c21a70ba0d5dde85b8de9ae0ceb579ca46b52 (patch)
tree805d737913202170f11539641c1541118f021429 /clang/lib/Basic
parent1f6a6086aedbb08e6cd788de5ee85c7ac99c7175 (diff)
downloadbcm5719-llvm-fb5c21a70ba0d5dde85b8de9ae0ceb579ca46b52.tar.gz
bcm5719-llvm-fb5c21a70ba0d5dde85b8de9ae0ceb579ca46b52.zip
PR18465: [Thumbv8] add predefined macros
currently, for thumbv8, two predefined macros are missing: define __THUMB_INTERWORK__ 1 define __THUMB_INTERWORK__ 1 This patch adds them for thumbv8. llvm-svn: 199819
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r--clang/lib/Basic/Targets.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 72f66416fbd..e4d86144afd 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -3973,12 +3973,12 @@ public:
StringRef CPUProfile = getCPUProfile(CPU);
if (!CPUProfile.empty())
Builder.defineMacro("__ARM_ARCH_PROFILE", CPUProfile);
-
+
// Subtarget options.
// FIXME: It's more complicated than this and we don't really support
// interworking.
- if (5 <= CPUArchVer && CPUArchVer <= 7)
+ if (5 <= CPUArchVer && CPUArchVer <= 8)
Builder.defineMacro("__THUMB_INTERWORK__");
if (ABI == "aapcs" || ABI == "aapcs-linux" || ABI == "aapcs-vfp") {
@@ -4000,7 +4000,11 @@ public:
if (IsThumb) {
Builder.defineMacro("__THUMBEL__");
Builder.defineMacro("__thumb__");
- if (CPUArch == "6T2" || CPUArchVer == 7)
+ // We check both CPUArchVer and ArchName because when only triple is
+ // specified, the default CPU is arm1136j-s.
+ StringRef ArchName = getTriple().getArchName();
+ if (CPUArch == "6T2" || CPUArchVer >= 7 || ArchName.endswith("v6t2") ||
+ ArchName.endswith("v7") || ArchName.endswith("v8"))
Builder.defineMacro("__thumb2__");
}
if (((HWDiv & HWDivThumb) && IsThumb) || ((HWDiv & HWDivARM) && !IsThumb))
@@ -4018,7 +4022,7 @@ public:
if (FPU & VFP4FPU)
Builder.defineMacro("__ARM_VFPV4__");
}
-
+
// This only gets set when Neon instructions are actually available, unlike
// the VFP define, hence the soft float and arch check. This is subtly
// different from gcc, we follow the intent which was that it should be set
OpenPOWER on IntegriCloud