diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2016-02-24 22:25:18 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2016-02-24 22:25:18 +0000 |
commit | 619427658fd0cfced1ff289ab2665f1b739281e7 (patch) | |
tree | 19a27fe85758eaf1f12c004b5e215d6e00f64aea /llvm | |
parent | f5e9b047ed7bfa30163f38cc5f430ab7a7c60489 (diff) | |
download | bcm5719-llvm-619427658fd0cfced1ff289ab2665f1b739281e7.tar.gz bcm5719-llvm-619427658fd0cfced1ff289ab2665f1b739281e7.zip |
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
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/MC/MCStreamer.h | 2 | ||||
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h index c0177c18361..baaf20bdfa7 100644 --- a/llvm/include/llvm/MC/MCStreamer.h +++ b/llvm/include/llvm/MC/MCStreamer.h @@ -222,6 +222,8 @@ public: return DwarfFrameInfos; } + bool hasUnfinishedDwarfFrameInfo(); + unsigned getNumWinFrameInfos() { return WinFrameInfos.size(); } ArrayRef<WinEH::FrameInfo *> getWinFrameInfos() const { return WinFrameInfos; diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 663ed8326ee..896318d88f0 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -174,6 +174,11 @@ MCDwarfFrameInfo *MCStreamer::getCurrentDwarfFrameInfo() { return &DwarfFrameInfos.back(); } +bool MCStreamer::hasUnfinishedDwarfFrameInfo() { + MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo(); + return CurFrame && !CurFrame->End; +} + void MCStreamer::EnsureValidDwarfFrame() { MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo(); if (!CurFrame || CurFrame->End) @@ -238,8 +243,7 @@ void MCStreamer::EmitCFISections(bool EH, bool Debug) { } void MCStreamer::EmitCFIStartProc(bool IsSimple) { - MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo(); - if (CurFrame && !CurFrame->End) + if (hasUnfinishedDwarfFrameInfo()) report_fatal_error("Starting a frame before finishing the previous one!"); MCDwarfFrameInfo Frame; |