diff --git a/src/compiler/llvm/backend_types.h b/src/compiler/llvm/backend_types.h
index 09f6de7..c89504a 100644
--- a/src/compiler/llvm/backend_types.h
+++ b/src/compiler/llvm/backend_types.h
@@ -38,15 +38,6 @@
   MAX_JTYPE
 };
 
-enum RegCategory {
-  kRegUnknown,
-  kRegZero,
-  kRegCat1nr,
-  kRegCat2,
-  kRegObject,
-};
-
-
 enum TBAASpecialType {
   kTBAARegister,
   kTBAAStackTemp,
@@ -106,39 +97,6 @@
   }
 }
 
-
-inline RegCategory GetRegCategoryFromJType(JType jty) {
-  switch (jty) {
-  case kVoid:
-    return kRegUnknown;
-
-  case kBoolean:
-  case kByte:
-  case kChar:
-  case kShort:
-  case kInt:
-  case kFloat:
-    return kRegCat1nr;
-
-  case kLong:
-  case kDouble:
-    return kRegCat2;
-
-  case kObject:
-    return kRegObject;
-
-  default:
-    LOG(FATAL) << "Unknown java type: " << jty;
-    return kRegUnknown;
-  }
-}
-
-
-inline RegCategory GetRegCategoryFromShorty(char shorty) {
-  return GetRegCategoryFromJType(GetJTypeFromShorty(shorty));
-}
-
-
 } // namespace llvm
 } // namespace art
 
diff --git a/src/compiler/llvm/compiler_llvm.cc b/src/compiler/llvm/compiler_llvm.cc
index be1730f..3fbc55a 100644
--- a/src/compiler/llvm/compiler_llvm.cc
+++ b/src/compiler/llvm/compiler_llvm.cc
@@ -139,7 +139,7 @@
   UniquePtr<LlvmCompilationUnit> cunit(AllocateCompilationUnit());
 
   cunit->SetDexCompilationUnit(dex_compilation_unit);
-  cunit->SetCompiler(compiler_driver_);
+  cunit->SetCompilerDriver(compiler_driver_);
   // TODO: consolidate ArtCompileMethods
   CompileOneMethod(*compiler_driver_,
                    kPortable,
diff --git a/src/compiler/llvm/compiler_llvm.h b/src/compiler/llvm/compiler_llvm.h
index cbee115..31973a4 100644
--- a/src/compiler/llvm/compiler_llvm.h
+++ b/src/compiler/llvm/compiler_llvm.h
@@ -89,9 +89,9 @@
  private:
   LlvmCompilationUnit* AllocateCompilationUnit();
 
-  CompilerDriver* compiler_driver_;
+  CompilerDriver* const compiler_driver_;
 
-  InstructionSet insn_set_;
+  const InstructionSet insn_set_;
 
   Mutex next_cunit_id_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
   size_t next_cunit_id_ GUARDED_BY(next_cunit_id_lock_);
diff --git a/src/compiler/llvm/gbc_expander.cc b/src/compiler/llvm/gbc_expander.cc
index 44cba4b..559ce4c 100644
--- a/src/compiler/llvm/gbc_expander.cc
+++ b/src/compiler/llvm/gbc_expander.cc
@@ -340,11 +340,11 @@
   static char ID;
 
   GBCExpanderPass(const IntrinsicHelper& intrinsic_helper, IRBuilder& irb,
-                  art::CompilerDriver* compiler, const art::DexCompilationUnit* dex_compilation_unit)
+                  art::CompilerDriver* driver, const art::DexCompilationUnit* dex_compilation_unit)
       : llvm::FunctionPass(ID), intrinsic_helper_(intrinsic_helper), irb_(irb),
         context_(irb.getContext()), rtb_(irb.Runtime()),
         shadow_frame_(NULL), old_shadow_frame_(NULL),
-        driver_(compiler),
+        driver_(driver),
         dex_compilation_unit_(dex_compilation_unit),
         func_(NULL), current_bb_(NULL), basic_block_unwind_(NULL), changed_(false) {}
 
diff --git a/src/compiler/llvm/llvm_compilation_unit.h b/src/compiler/llvm/llvm_compilation_unit.h
index 96d019c..c632046 100644
--- a/src/compiler/llvm/llvm_compilation_unit.h
+++ b/src/compiler/llvm/llvm_compilation_unit.h
@@ -78,7 +78,7 @@
   LLVMInfo* GetQuickContext() const {
     return llvm_info_.get();
   }
-  void SetCompiler(CompilerDriver* driver) {
+  void SetCompilerDriver(CompilerDriver* driver) {
     driver_ = driver;
   }
   const DexCompilationUnit* GetDexCompilationUnit() {
