diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index b7a0c9d..cb698c3 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -50,7 +50,7 @@
 }
 
 JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji)
-  : ExecutionEngine(MP), TM(tm), TJI(tji), state(MP) {
+  : ExecutionEngine(MP), TM(tm), TJI(tji), jitstate(MP) {
   setTargetData(TM.getTargetData());
 
   // Initialize MCE
@@ -58,7 +58,7 @@
 
   // Add target data
   MutexGuard locked(lock);
-  FunctionPassManager &PM = state.getPM(locked);
+  FunctionPassManager &PM = jitstate.getPM(locked);
   PM.add(new TargetData(*TM.getTargetData()));
 
   // Turn the machine code intermediate representation into bytes in memory that
@@ -235,15 +235,15 @@
 
   // JIT the function
   isAlreadyCodeGenerating = true;
-  state.getPM(locked).run(*F);
+  jitstate.getPM(locked).run(*F);
   isAlreadyCodeGenerating = false;
 
   // If the function referred to a global variable that had not yet been
   // emitted, it allocates memory for the global, but doesn't emit it yet.  Emit
   // all of these globals now.
-  while (!state.getPendingGlobals(locked).empty()) {
-    const GlobalVariable *GV = state.getPendingGlobals(locked).back();
-    state.getPendingGlobals(locked).pop_back();
+  while (!jitstate.getPendingGlobals(locked).empty()) {
+    const GlobalVariable *GV = jitstate.getPendingGlobals(locked).back();
+    jitstate.getPendingGlobals(locked).pop_back();
     EmitGlobalVariable(GV);
   }
 }
@@ -335,7 +335,7 @@
       unsigned MisAligned = ((intptr_t)Ptr & (A-1));
       Ptr = (char*)Ptr + (MisAligned ? (A-MisAligned) : 0);
     }
-    state.getPendingGlobals(locked).push_back(GV);
+    jitstate.getPendingGlobals(locked).push_back(GV);
   }
   addGlobalMapping(GV, Ptr);
   return Ptr;
diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h
index 95105c9..74a036f 100644
--- a/lib/ExecutionEngine/JIT/JIT.h
+++ b/lib/ExecutionEngine/JIT/JIT.h
@@ -54,7 +54,7 @@
   TargetJITInfo &TJI;      // The JITInfo for the target we are compiling to
   MachineCodeEmitter *MCE; // MCE object
 
-  JITState state;
+  JITState jitstate;
 
   JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji);
 public:
