aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/TargetLoweringObjectFile.cpp
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2020-09-27 22:41:56 -0700
committerArthur Eubanks <aeubanks@google.com>2020-09-27 22:43:14 -0700
commita2578e92e2928eefa108939b15a7a28c8a8cb4b3 (patch)
tree926867318ce3cab1900184cf52e106803fcf9c8d /llvm/lib/Target/TargetLoweringObjectFile.cpp
parent15985952aca66fcd5ae8b6c8a007a3a694848a03 (diff)
downloadllvm-a2578e92e2928eefa108939b15a7a28c8a8cb4b3.zip
llvm-a2578e92e2928eefa108939b15a7a28c8a8cb4b3.tar.gz
llvm-a2578e92e2928eefa108939b15a7a28c8a8cb4b3.tar.bz2
Revert "Reland [CodeGen] emit CG profile for COFF object file"
This reverts commit 506b6170cb513f1cb6e93a3b690c758f9ded18ac. This still causes link errors, see https://crbug.com/1130780.
Diffstat (limited to 'llvm/lib/Target/TargetLoweringObjectFile.cpp')
-rw-r--r--llvm/lib/Target/TargetLoweringObjectFile.cpp48
1 files changed, 0 insertions, 48 deletions
diff --git a/llvm/lib/Target/TargetLoweringObjectFile.cpp b/llvm/lib/Target/TargetLoweringObjectFile.cpp
index 7128c35..eea0aee 100644
--- a/llvm/lib/Target/TargetLoweringObjectFile.cpp
+++ b/llvm/lib/Target/TargetLoweringObjectFile.cpp
@@ -49,8 +49,6 @@ void TargetLoweringObjectFile::Initialize(MCContext &ctx,
// Reset various EH DWARF encodings.
PersonalityEncoding = LSDAEncoding = TTypeEncoding = dwarf::DW_EH_PE_absptr;
CallSiteEncoding = dwarf::DW_EH_PE_uleb128;
-
- this->TM = &TM;
}
TargetLoweringObjectFile::~TargetLoweringObjectFile() {
@@ -138,52 +136,6 @@ void TargetLoweringObjectFile::emitPersonalityValue(MCStreamer &Streamer,
const MCSymbol *Sym) const {
}
-void TargetLoweringObjectFile::emitCGProfile(MCStreamer &Streamer,
- Module &M) const {
- MCContext &C = getContext();
- SmallVector<Module::ModuleFlagEntry, 8> ModuleFlags;
- M.getModuleFlagsMetadata(ModuleFlags);
-
- MDNode *CFGProfile = nullptr;
-
- for (const auto &MFE : ModuleFlags) {
- StringRef Key = MFE.Key->getString();
- if (Key == "CG Profile") {
- CFGProfile = cast<MDNode>(MFE.Val);
- break;
- }
- }
-
- if (!CFGProfile)
- return;
-
- auto GetSym = [this](const MDOperand &MDO) -> MCSymbol * {
- if (!MDO)
- return nullptr;
- auto *V = cast<ValueAsMetadata>(MDO);
- const Function *F = cast<Function>(V->getValue());
- if (F->hasDLLImportStorageClass())
- return nullptr;
- return TM->getSymbol(F);
- };
-
- for (const auto &Edge : CFGProfile->operands()) {
- MDNode *E = cast<MDNode>(Edge);
- const MCSymbol *From = GetSym(E->getOperand(0));
- const MCSymbol *To = GetSym(E->getOperand(1));
- // Skip null functions. This can happen if functions are dead stripped after
- // the CGProfile pass has been run.
- if (!From || !To)
- continue;
- uint64_t Count = cast<ConstantAsMetadata>(E->getOperand(2))
- ->getValue()
- ->getUniqueInteger()
- .getZExtValue();
- Streamer.emitCGProfileEntry(
- MCSymbolRefExpr::create(From, MCSymbolRefExpr::VK_None, C),
- MCSymbolRefExpr::create(To, MCSymbolRefExpr::VK_None, C), Count);
- }
-}
/// getKindForGlobal - This is a top-level target-independent classifier for
/// a global object. Given a global variable and information from the TM, this