diff options
| author | 2017-01-14 20:03:33 +0000 | |
|---|---|---|
| committer | 2017-01-14 20:03:33 +0000 | |
| commit | dc7ed217e9eb98649b8c5ed4495b0a3dc1b7ff43 (patch) | |
| tree | c79aa107474a358f6af1132e6d94161c1e33a918 /gnu/llvm/lib/IR/FunctionInfo.cpp | |
| parent | Import LLVM 3.9.1 including clang and lld. (diff) | |
| download | wireguard-openbsd-dc7ed217e9eb98649b8c5ed4495b0a3dc1b7ff43.tar.xz wireguard-openbsd-dc7ed217e9eb98649b8c5ed4495b0a3dc1b7ff43.zip | |
Merge LLVM 3.9.1
Diffstat (limited to 'gnu/llvm/lib/IR/FunctionInfo.cpp')
| -rw-r--r-- | gnu/llvm/lib/IR/FunctionInfo.cpp | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/gnu/llvm/lib/IR/FunctionInfo.cpp b/gnu/llvm/lib/IR/FunctionInfo.cpp deleted file mode 100644 index 17a67bcf047..00000000000 --- a/gnu/llvm/lib/IR/FunctionInfo.cpp +++ /dev/null @@ -1,67 +0,0 @@ -//===-- FunctionInfo.cpp - Function Info Index ----------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file implements the function info index and summary classes for the -// IR library. -// -//===----------------------------------------------------------------------===// - -#include "llvm/IR/FunctionInfo.h" -#include "llvm/ADT/StringMap.h" -using namespace llvm; - -// Create the combined function index/summary from multiple -// per-module instances. -void FunctionInfoIndex::mergeFrom(std::unique_ptr<FunctionInfoIndex> Other, - uint64_t NextModuleId) { - - StringRef ModPath; - for (auto &OtherFuncInfoLists : *Other) { - std::string FuncName = OtherFuncInfoLists.getKey(); - FunctionInfoList &List = OtherFuncInfoLists.second; - - // Assert that the func info list only has one entry, since we shouldn't - // have duplicate names within a single per-module index. - assert(List.size() == 1); - std::unique_ptr<FunctionInfo> Info = std::move(List.front()); - - // Skip if there was no function summary section. - if (!Info->functionSummary()) - continue; - - // Add the module path string ref for this module if we haven't already - // saved a reference to it. - if (ModPath.empty()) - ModPath = - addModulePath(Info->functionSummary()->modulePath(), NextModuleId); - else - assert(ModPath == Info->functionSummary()->modulePath() && - "Each module in the combined map should have a unique ID"); - - // Note the module path string ref was copied above and is still owned by - // the original per-module index. Reset it to the new module path - // string reference owned by the combined index. - Info->functionSummary()->setModulePath(ModPath); - - // If it is a local function, rename it. - if (Info->functionSummary()->isLocalFunction()) { - // Any local functions are virtually renamed when being added to the - // combined index map, to disambiguate from other functions with - // the same name. The symbol table created for the combined index - // file should contain the renamed symbols. - FuncName = - FunctionInfoIndex::getGlobalNameForLocal(FuncName, NextModuleId); - } - - // Add new function info to existing list. There may be duplicates when - // combining FunctionMap entries, due to COMDAT functions. Any local - // functions were virtually renamed above. - addFunctionInfo(FuncName, std::move(Info)); - } -} |
