diff options
author | Weiming Zhao <weimingz@codeaurora.org> | 2014-01-22 18:42:13 +0000 |
---|---|---|
committer | Weiming Zhao <weimingz@codeaurora.org> | 2014-01-22 18:42:13 +0000 |
commit | fb5c21a70ba0d5dde85b8de9ae0ceb579ca46b52 (patch) | |
tree | 805d737913202170f11539641c1541118f021429 /clang/lib/Basic | |
parent | 1f6a6086aedbb08e6cd788de5ee85c7ac99c7175 (diff) | |
download | bcm5719-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.cpp | 12 |
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 |