summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorAmaury Sechet <deadalnix@gmail.com>2016-02-24 22:25:18 +0000
committerAmaury Sechet <deadalnix@gmail.com>2016-02-24 22:25:18 +0000
commit619427658fd0cfced1ff289ab2665f1b739281e7 (patch)
tree19a27fe85758eaf1f12c004b5e215d6e00f64aea /llvm
parentf5e9b047ed7bfa30163f38cc5f430ab7a7c60489 (diff)
downloadbcm5719-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.h2
-rw-r--r--llvm/lib/MC/MCStreamer.cpp8
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;
OpenPOWER on IntegriCloud