aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/ARMTargetMachine.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-05-16 02:01:49 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-05-16 02:01:49 +0000
commit9307292ae27c125a10eabccb5a437200d831a55f (patch)
tree77aa9c26b47fcabd6db254fedecad7a5daf6937f /lib/Target/ARM/ARMTargetMachine.cpp
parent4e654852f1bee3813dcc1d207710f041cdd22717 (diff)
downloadexternal_llvm-9307292ae27c125a10eabccb5a437200d831a55f.zip
external_llvm-9307292ae27c125a10eabccb5a437200d831a55f.tar.gz
external_llvm-9307292ae27c125a10eabccb5a437200d831a55f.tar.bz2
Hooks for predication support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37093 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMTargetMachine.cpp')
-rw-r--r--lib/Target/ARM/ARMTargetMachine.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp
index 3815875..57b6440 100644
--- a/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/lib/Target/ARM/ARMTargetMachine.cpp
@@ -17,6 +17,7 @@
#include "ARM.h"
#include "llvm/Module.h"
#include "llvm/PassManager.h"
+#include "llvm/CodeGen/Passes.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Target/TargetMachineRegistry.h"
#include "llvm/Target/TargetOptions.h"
@@ -24,6 +25,8 @@ using namespace llvm;
static cl::opt<bool> DisableLdStOpti("disable-arm-loadstore-opti", cl::Hidden,
cl::desc("Disable load store optimization pass"));
+static cl::opt<bool> EnableIfConversion("enable-arm-if-conversion", cl::Hidden,
+ cl::desc("Enable if-conversion pass"));
namespace {
// Register the target.
@@ -85,6 +88,14 @@ bool ARMTargetMachine::addInstSelector(FunctionPassManager &PM, bool Fast) {
return false;
}
+bool ARMTargetMachine::addPostRegAlloc(FunctionPassManager &PM, bool Fast) {
+ if (Fast || !EnableIfConversion || Subtarget.isThumb())
+ return false;
+
+ PM.add(createIfConverterPass());
+ return true;
+}
+
bool ARMTargetMachine::addPreEmitPass(FunctionPassManager &PM, bool Fast) {
// FIXME: temporarily disabling load / store optimization pass for Thumb mode.
if (!Fast && !DisableLdStOpti && !Subtarget.isThumb())