summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenAction.cpp
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2016-01-08 17:04:29 +0000
committerTeresa Johnson <tejohnson@google.com>2016-01-08 17:04:29 +0000
commit4b4f4b90ed42bd8de8a07db721128673a5f69b76 (patch)
tree89122b3e17c21225da3142a96105b79518088f61 /clang/lib/CodeGen/CodeGenAction.cpp
parentb816ba0fb30c55229c22fe2539ab07b0b1b3d6b9 (diff)
downloadbcm5719-llvm-4b4f4b90ed42bd8de8a07db721128673a5f69b76.tar.gz
bcm5719-llvm-4b4f4b90ed42bd8de8a07db721128673a5f69b76.zip
[ThinLTO] Leverage new in-place renaming support
Due to the new in-place renaming support added in r257174, we no longer need to invoke ThinLTO global renaming from clang. It will be invoked on the module in the FunctionImport pass (by an immediately following llvm commit). As a result, we don't need to load the FunctionInfoIndex as early, so that is moved down into EmitAssemblyHelper::EmitAssembly. llvm-svn: 257179
Diffstat (limited to 'clang/lib/CodeGen/CodeGenAction.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenAction.cpp36
1 files changed, 1 insertions, 35 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index abef5432518..0a670ab19aa 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -26,12 +26,10 @@
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/DiagnosticPrinter.h"
-#include "llvm/IR/FunctionInfo.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Linker/Linker.h"
-#include "llvm/Object/FunctionIndexObjectFile.h"
#include "llvm/Pass.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SourceMgr.h"
@@ -781,43 +779,11 @@ void CodeGenAction::ExecuteAction() {
TheModule->setTargetTriple(TargetOpts.Triple);
}
- auto DiagHandler = [&](const DiagnosticInfo &DI) {
- TheModule->getContext().diagnose(DI);
- };
-
- // If we are performing ThinLTO importing compilation (indicated by
- // a non-empty index file option), then we need promote to global scope
- // and rename any local values that are potentially exported to other
- // modules. Do this early so that the rest of the compilation sees the
- // promoted symbols.
- std::unique_ptr<FunctionInfoIndex> Index;
- if (!CI.getCodeGenOpts().ThinLTOIndexFile.empty()) {
- ErrorOr<std::unique_ptr<FunctionInfoIndex>> IndexOrErr =
- llvm::getFunctionIndexForFile(CI.getCodeGenOpts().ThinLTOIndexFile,
- DiagHandler);
- if (std::error_code EC = IndexOrErr.getError()) {
- std::string Error = EC.message();
- errs() << "Error loading index file '"
- << CI.getCodeGenOpts().ThinLTOIndexFile << "': " << Error
- << "\n";
- return;
- }
- Index = std::move(IndexOrErr.get());
- assert(Index);
- // Currently this requires creating a new Module object.
- std::unique_ptr<llvm::Module> RenamedModule =
- renameModuleForThinLTO(std::move(TheModule), Index.get());
- if (!RenamedModule)
- return;
-
- TheModule = std::move(RenamedModule);
- }
-
LLVMContext &Ctx = TheModule->getContext();
Ctx.setInlineAsmDiagnosticHandler(BitcodeInlineAsmDiagHandler);
EmitBackendOutput(CI.getDiagnostics(), CI.getCodeGenOpts(), TargetOpts,
CI.getLangOpts(), CI.getTarget().getDataLayoutString(),
- TheModule.get(), BA, OS, std::move(Index));
+ TheModule.get(), BA, OS);
return;
}
OpenPOWER on IntegriCloud