diff options
author | Tom Stellard <tstellar@redhat.com> | 2019-11-14 13:49:02 -0800 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2019-11-14 18:57:24 -0800 |
commit | 686a8891ca57463ec0d2f3ae4f732e6259cedc33 (patch) | |
tree | a52b293074e79675762e8257e4fa0b595a737487 | |
parent | 840845a1eeae2dc039600ef826de21347edd53ef (diff) | |
download | llvm-686a8891ca57463ec0d2f3ae4f732e6259cedc33.zip llvm-686a8891ca57463ec0d2f3ae4f732e6259cedc33.tar.gz llvm-686a8891ca57463ec0d2f3ae4f732e6259cedc33.tar.bz2 |
Revert ABI/API changes from b288f7d
This still fixes PR43479, but does it in a way that does not change
the libLLVM-9.so ABI.
-rw-r--r-- | llvm/include/llvm/CodeGen/MachineFunction.h | 19 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MachineFunction.cpp | 20 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MachineInstr.cpp | 2 |
3 files changed, 36 insertions, 5 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index 9c610b2..60c1346 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -787,9 +787,14 @@ public: /// /// This is allocated on the function's allocator and so lives the life of /// the function. - MachineInstr::ExtraInfo *createMIExtraInfo( - ArrayRef<MachineMemOperand *> MMOs, MCSymbol *PreInstrSymbol = nullptr, - MCSymbol *PostInstrSymbol = nullptr, MDNode *HeapAllocMarker = nullptr); + MachineInstr::ExtraInfo * + createMIExtraInfo(ArrayRef<MachineMemOperand *> MMOs, + MCSymbol *PreInstrSymbol = nullptr, + MCSymbol *PostInstrSymbol = nullptr); + + MachineInstr::ExtraInfo *createMIExtraInfoWithMarker( + ArrayRef<MachineMemOperand *> MMOs, MCSymbol *PreInstrSymbol, + MCSymbol *PostInstrSymbol, MDNode *HeapAllocMarker); /// Allocate a string and populate it with the given external symbol name. const char *createExternalSymbolName(StringRef Name); @@ -933,6 +938,14 @@ public: return CodeViewAnnotations; } + /// Record heapallocsites + void addCodeViewHeapAllocSite(MachineInstr *I, MDNode *MD); + + ArrayRef<std::tuple<MCSymbol*, MCSymbol*, DIType*>> + getCodeViewHeapAllocSites() const { + return CodeViewHeapAllocSites; + } + /// Return a reference to the C++ typeinfo for the current function. const std::vector<const GlobalValue *> &getTypeInfos() const { return TypeInfos; diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp index e6133ba..faae944 100644 --- a/llvm/lib/CodeGen/MachineFunction.cpp +++ b/llvm/lib/CodeGen/MachineFunction.cpp @@ -446,7 +446,15 @@ MachineFunction::getMachineMemOperand(const MachineMemOperand *MMO, MMO->getOrdering(), MMO->getFailureOrdering()); } -MachineInstr::ExtraInfo *MachineFunction::createMIExtraInfo( +MachineInstr::ExtraInfo * +MachineFunction::createMIExtraInfo(ArrayRef<MachineMemOperand *> MMOs, + MCSymbol *PreInstrSymbol, + MCSymbol *PostInstrSymbol) { + return MachineInstr::ExtraInfo::create(Allocator, MMOs, PreInstrSymbol, + PostInstrSymbol, nullptr); +} + +MachineInstr::ExtraInfo *MachineFunction::createMIExtraInfoWithMarker( ArrayRef<MachineMemOperand *> MMOs, MCSymbol *PreInstrSymbol, MCSymbol *PostInstrSymbol, MDNode *HeapAllocMarker) { return MachineInstr::ExtraInfo::create(Allocator, MMOs, PreInstrSymbol, @@ -822,6 +830,16 @@ try_next:; return FilterID; } +void MachineFunction::addCodeViewHeapAllocSite(MachineInstr *I, MDNode *MD) { + MCSymbol *BeginLabel = Ctx.createTempSymbol("heapallocsite", true); + MCSymbol *EndLabel = Ctx.createTempSymbol("heapallocsite", true); + I->setPreInstrSymbol(*this, BeginLabel); + I->setPostInstrSymbol(*this, EndLabel); + + DIType *DI = dyn_cast<DIType>(MD); + CodeViewHeapAllocSites.push_back(std::make_tuple(BeginLabel, EndLabel, DI)); +} + void MachineFunction::updateCallSiteInfo(const MachineInstr *Old, const MachineInstr *New) { if (!Target.Options.EnableDebugEntryValues || Old == New) diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp index 72ab36e..d81f5bb 100644 --- a/llvm/lib/CodeGen/MachineInstr.cpp +++ b/llvm/lib/CodeGen/MachineInstr.cpp @@ -338,7 +338,7 @@ void MachineInstr::setExtraInfo(MachineFunction &MF, // 32-bit pointers. // FIXME: Maybe we should make the symbols in the extra info mutable? else if (NumPointers > 1 || HasHeapAllocMarker) { - Info.set<EIIK_OutOfLine>(MF.createMIExtraInfo( + Info.set<EIIK_OutOfLine>(MF.createMIExtraInfoWithMarker( MMOs, PreInstrSymbol, PostInstrSymbol, HeapAllocMarker)); return; } |