Add capability to push/pop DFI in MCStreamer. NFC

Summary: This is extracted from D17555

Reviewers: davidxl, reames, sanjoy, MatzeB, pete

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D17579

llvm-svn: 261796
This commit is contained in:
Amaury Sechet 2016-02-24 22:25:18 +00:00
parent f5e9b047ed
commit 619427658f
2 changed files with 8 additions and 2 deletions

View File

@ -222,6 +222,8 @@ public:
return DwarfFrameInfos; return DwarfFrameInfos;
} }
bool hasUnfinishedDwarfFrameInfo();
unsigned getNumWinFrameInfos() { return WinFrameInfos.size(); } unsigned getNumWinFrameInfos() { return WinFrameInfos.size(); }
ArrayRef<WinEH::FrameInfo *> getWinFrameInfos() const { ArrayRef<WinEH::FrameInfo *> getWinFrameInfos() const {
return WinFrameInfos; return WinFrameInfos;

View File

@ -174,6 +174,11 @@ MCDwarfFrameInfo *MCStreamer::getCurrentDwarfFrameInfo() {
return &DwarfFrameInfos.back(); return &DwarfFrameInfos.back();
} }
bool MCStreamer::hasUnfinishedDwarfFrameInfo() {
MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo();
return CurFrame && !CurFrame->End;
}
void MCStreamer::EnsureValidDwarfFrame() { void MCStreamer::EnsureValidDwarfFrame() {
MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo(); MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo();
if (!CurFrame || CurFrame->End) if (!CurFrame || CurFrame->End)
@ -238,8 +243,7 @@ void MCStreamer::EmitCFISections(bool EH, bool Debug) {
} }
void MCStreamer::EmitCFIStartProc(bool IsSimple) { void MCStreamer::EmitCFIStartProc(bool IsSimple) {
MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo(); if (hasUnfinishedDwarfFrameInfo())
if (CurFrame && !CurFrame->End)
report_fatal_error("Starting a frame before finishing the previous one!"); report_fatal_error("Starting a frame before finishing the previous one!");
MCDwarfFrameInfo Frame; MCDwarfFrameInfo Frame;