Add capability to push/pop DFI in MCStreamer. NFC
authorAmaury Sechet <deadalnix@gmail.com>
Wed, 24 Feb 2016 22:25:18 +0000 (22:25 +0000)
committerAmaury Sechet <deadalnix@gmail.com>
Wed, 24 Feb 2016 22:25:18 +0000 (22:25 +0000)
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

llvm/include/llvm/MC/MCStreamer.h
llvm/lib/MC/MCStreamer.cpp

index c0177c18361fa7fdd3dd552e069d3e08418c9086..baaf20bdfa7916c3b180ea50c10031a5329f8274 100644 (file)
@@ -222,6 +222,8 @@ public:
     return DwarfFrameInfos;
   }
 
+  bool hasUnfinishedDwarfFrameInfo();
+
   unsigned getNumWinFrameInfos() { return WinFrameInfos.size(); }
   ArrayRef<WinEH::FrameInfo *> getWinFrameInfos() const {
     return WinFrameInfos;
index 663ed8326eebf2ce3c373cc172e53735b5f332a2..896318d88f009f18aa48e13df9c26eb143ce31c2 100644 (file)
@@ -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;