diff --git a/include/llvm-c/lto.h b/include/llvm-c/lto.h
index f822b47..c0f4c6b 100644
--- a/include/llvm-c/lto.h
+++ b/include/llvm-c/lto.h
@@ -251,6 +251,12 @@
                                int nargs);
 
 /**
+ * Enables the internalize pass during LTO optimizations.
+ */
+extern void
+lto_codegen_whole_program_optimization(lto_code_gen_t cg);
+
+/**
  * Adds to a list of all global symbols that must exist in the final
  * generated code.  If a function is not listed, it might be
  * inlined into every usage and optimized away.
@@ -258,7 +264,6 @@
 extern void
 lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char* symbol);
 
-
 /**
  * Writes a new object file at the specified path that contains the
  * merged contents of all modules added so far.
@@ -267,7 +272,6 @@
 extern bool
 lto_codegen_write_merged_modules(lto_code_gen_t cg, const char* path);
 
-
 /**
  * Generates code for all added modules into one native object file.
  * On success returns a pointer to a generated mach-o/ELF buffer and
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index 0e61c2f..7620bcb 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -67,7 +67,7 @@
   : _context(getGlobalContext()),
     _linker("LinkTimeOptimizer", "ld-temp.o", _context), _target(NULL),
     _emitDwarfDebugInfo(false), _scopeRestrictionsDone(false),
-    _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
+    _runInternalizePass(false), _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
     _nativeObjectFile(NULL) {
   InitializeAllTargets();
   InitializeAllTargetMCs();
@@ -366,7 +366,8 @@
   // Add an appropriate TargetData instance for this module...
   passes.add(new TargetData(*_target->getTargetData()));
 
-  PassManagerBuilder().populateLTOPassManager(passes, /*Internalize=*/ false,
+  PassManagerBuilder().populateLTOPassManager(passes,
+                                              _runInternalizePass,
                                               !DisableInline,
                                               DisableGVNLoadPRE);
 
diff --git a/tools/lto/LTOCodeGenerator.h b/tools/lto/LTOCodeGenerator.h
index 3081b7d..bac3e6e 100644
--- a/tools/lto/LTOCodeGenerator.h
+++ b/tools/lto/LTOCodeGenerator.h
@@ -54,6 +54,8 @@
   const void *compile(size_t *length, std::string &errMsg);
   void setCodeGenDebugOptions(const char *opts);
 
+  void enableInternalizePass() { _runInternalizePass = true; }
+
 private:
   bool generateObjectFile(llvm::raw_ostream &out, std::string &errMsg);
   void applyScopeRestrictions();
@@ -70,6 +72,7 @@
   llvm::TargetMachine*        _target;
   bool                        _emitDwarfDebugInfo;
   bool                        _scopeRestrictionsDone;
+  bool                        _runInternalizePass;
   lto_codegen_model           _codeModel;
   StringSet                   _mustPreserveSymbols;
   StringSet                   _asmUndefinedRefs;
diff --git a/tools/lto/lto.cpp b/tools/lto/lto.cpp
index a7e633d..e523eb3 100644
--- a/tools/lto/lto.cpp
+++ b/tools/lto/lto.cpp
@@ -183,6 +183,12 @@
   cg->addMustPreserveSymbol(symbol);
 }
 
+/// lto_codegen_whole_program_optimization - Enable the internalize pass during
+/// LTO optimizations.
+void lto_codegen_whole_program_optimization(lto_code_gen_t cg) {
+  cg->enableInternalizePass();
+}
+
 /// lto_codegen_write_merged_modules - Writes a new file at the specified path
 /// that contains the merged contents of all modules added so far. Returns true
 /// on error (check lto_get_error_message() for details).
diff --git a/tools/lto/lto.exports b/tools/lto/lto.exports
index b900bfb..1726388 100644
--- a/tools/lto/lto.exports
+++ b/tools/lto/lto.exports
@@ -27,6 +27,7 @@
 lto_codegen_set_assembler_path
 lto_codegen_set_cpu
 lto_codegen_compile_to_file
+lto_codegen_whole_program_optimization
 LLVMCreateDisasm
 LLVMDisasmDispose
 LLVMDisasmInstruction
