diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index d2de0a8..9bdaa57 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -45,7 +45,7 @@
 /// create - Create an return a new JIT compiler if there is one available
 /// for the current target.  Otherwise, return null.
 ///
-ExecutionEngine *VM::create(Module *M) {
+ExecutionEngine *VM::create(ModuleProvider *MP) {
   TargetMachine* (*TargetMachineAllocator)(const Module &) = 0;
 
   // Allow a command-line switch to override what *should* be the default target
@@ -71,14 +71,16 @@
   }
 
   // Allocate a target...
-  TargetMachine *Target = TargetMachineAllocator(*M);
+  TargetMachine *Target = TargetMachineAllocator(*(MP->getModule()));
   assert(Target && "Could not allocate target machine!");
   
   // Create the virtual machine object...
-  return new VM(M, Target);
+  return new VM(MP, Target);
 }
 
-VM::VM(Module *M, TargetMachine *tm) : ExecutionEngine(M), TM(*tm) {
+VM::VM(ModuleProvider *MP, TargetMachine *tm) : ExecutionEngine(MP), TM(*tm),
+  PM(MP)
+{
   setTargetData(TM.getTargetData());
 
   // Initialize MCE
@@ -94,7 +96,10 @@
     // Specialize LLVM code for this target machine and then
     // run basic dataflow optimizations on LLVM code.
     PM.add(createPreSelectionPass(TM));
-    PM.run(*M);
+    // We cannot utilize function-at-a-time loading here because PreSelection
+    // is a ModulePass.
+    MP->materializeModule();
+    PM.run(*(MP->getModule()));
   }
 #endif
 
diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h
index f79be1f..ddfd896 100644
--- a/lib/ExecutionEngine/JIT/JIT.h
+++ b/lib/ExecutionEngine/JIT/JIT.h
@@ -23,13 +23,13 @@
   MachineCodeEmitter *MCE; // MCE object
 
 public:
-  VM(Module *M, TargetMachine *tm);
+  VM(ModuleProvider *MP, TargetMachine *tm);
   ~VM();
 
   /// create - Create an return a new JIT compiler if there is one available
   /// for the current target.  Otherwise, return null.
   ///
-  static ExecutionEngine *create(Module *M);
+  static ExecutionEngine *create(ModuleProvider *MP);
 
   /// run - Start execution with the specified function and arguments.
   ///
diff --git a/lib/ExecutionEngine/JIT/VM.cpp b/lib/ExecutionEngine/JIT/VM.cpp
index ee7e311..622215b 100644
--- a/lib/ExecutionEngine/JIT/VM.cpp
+++ b/lib/ExecutionEngine/JIT/VM.cpp
@@ -43,6 +43,9 @@
   void *&Addr = GlobalAddress[F];   // Function already code gen'd
   if (Addr) return Addr;
 
+  // Make sure we read in the function if it exists in this Module
+  MP->materializeFunction(F);
+
   if (F->isExternal())
     return Addr = getPointerToNamedFunction(F->getName());
 
diff --git a/lib/ExecutionEngine/JIT/VM.h b/lib/ExecutionEngine/JIT/VM.h
index f79be1f..ddfd896 100644
--- a/lib/ExecutionEngine/JIT/VM.h
+++ b/lib/ExecutionEngine/JIT/VM.h
@@ -23,13 +23,13 @@
   MachineCodeEmitter *MCE; // MCE object
 
 public:
-  VM(Module *M, TargetMachine *tm);
+  VM(ModuleProvider *MP, TargetMachine *tm);
   ~VM();
 
   /// create - Create an return a new JIT compiler if there is one available
   /// for the current target.  Otherwise, return null.
   ///
-  static ExecutionEngine *create(Module *M);
+  static ExecutionEngine *create(ModuleProvider *MP);
 
   /// run - Start execution with the specified function and arguments.
   ///
