Index: lib/Target/ARM/ARMTargetMachine.cpp |
diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp |
index c02e981e54c964187a152957537b587c99b6e4d6..499f974b96c84f6d7d4adbb672ee22b5e60100b8 100644 |
--- a/lib/Target/ARM/ARMTargetMachine.cpp |
+++ b/lib/Target/ARM/ARMTargetMachine.cpp |
@@ -20,6 +20,9 @@ |
#include "llvm/Support/FormattedStream.h" |
#include "llvm/Support/TargetRegistry.h" |
#include "llvm/Target/TargetOptions.h" |
+// @LOCALMOD-START |
+#include "llvm/Transforms/NaCl.h" |
+// @LOCALMOD-END |
#include "llvm/Transforms/Scalar.h" |
using namespace llvm; |
@@ -141,6 +144,9 @@ public: |
virtual bool addPreRegAlloc(); |
virtual bool addPreSched2(); |
virtual bool addPreEmitPass(); |
+// @LOCALMOD-START |
+ virtual void addIRPasses(); |
+// @LOCALMOD-END |
}; |
} // namespace |
@@ -229,6 +235,15 @@ bool ARMPassConfig::addPreEmitPass() { |
return true; |
} |
+// @LOCALMOD-START |
+void ARMPassConfig::addIRPasses() { |
+ if (getARMSubtarget().isTargetNaCl()) { |
+ addPass(createInsertDivideCheckPass()); |
+ } |
+ TargetPassConfig::addIRPasses(); |
+} |
+// @LOCALMOD-END |
+ |
bool ARMBaseTargetMachine::addCodeEmitter(PassManagerBase &PM, |
JITCodeEmitter &JCE) { |
// Machine code emitter pass for ARM. |