aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMSubtarget.cpp
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@chromium.org>2012-07-09 10:52:46 -0700
committerDerek Schuff <dschuff@chromium.org>2012-07-09 11:00:37 -0700
commit5dbcc7e0c9c12f4a4042fb4a226654aee927999c (patch)
treeb316a3370e9286cb4e6f81b2f9d8bd8b54ce5123 /lib/Target/ARM/ARMSubtarget.cpp
parent86dc97be9ac3b4804528e087b04b4f4192cdee54 (diff)
LOCALMODs from hg 0b098ca44de7 against r158408 (hg 90a87d6bfe45)
(only non-new files; new files in git 4f429c8b) Change-Id: Ia39f818088485bd90e4d048db404f8d6ba5f836b
Diffstat (limited to 'lib/Target/ARM/ARMSubtarget.cpp')
-rw-r--r--lib/Target/ARM/ARMSubtarget.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp
index db6512c9b9..73c77eb131 100644
--- a/lib/Target/ARM/ARMSubtarget.cpp
+++ b/lib/Target/ARM/ARMSubtarget.cpp
@@ -23,13 +23,22 @@
using namespace llvm;
-static cl::opt<bool>
+cl::opt<bool> // @LOCALMOD
ReserveR9("arm-reserve-r9", cl::Hidden,
cl::desc("Reserve R9, making it unavailable as GPR"));
static cl::opt<bool>
DarwinUseMOVT("arm-darwin-use-movt", cl::init(true), cl::Hidden);
+// @LOCALMOD-START
+// TODO: * JITing has not been tested at all
+// * Thumb mode operation is also not clear: it seems jump tables
+// for thumb are broken independent of this option
+static cl::opt<bool>
+NoInlineJumpTables("no-inline-jumptables",
+ cl::desc("Do not place jump tables inline in the code"));
+// @LOCALMOD-END
+
static cl::opt<bool>
StrictAlign("arm-strict-align", cl::Hidden,
cl::desc("Disallow all unaligned memory accesses"));
@@ -58,6 +67,7 @@ ARMSubtarget::ARMSubtarget(const std::string &TT, const std::string &CPU,
, NoARM(false)
, PostRAScheduler(false)
, IsR9Reserved(ReserveR9)
+ , UseInlineJumpTables(!NoInlineJumpTables) // @LOCALMOD
, UseMovt(false)
, SupportsTailCall(false)
, HasFP16(false)
@@ -116,6 +126,12 @@ ARMSubtarget::ARMSubtarget(const std::string &TT, const std::string &CPU,
SupportsTailCall = !getTargetTriple().isOSVersionLT(5, 0);
}
+ // @LOCALMOD-BEGIN
+ // NaCl uses MovT to avoid generating constant islands.
+ if (isTargetNaCl() && !useConstPool())
+ UseMovt = true;
+ // @LOCALMOD-END
+
if (!isThumb() || hasThumb2())
PostRAScheduler = true;