Factor some code into a new EmitFrames method.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 10 May 2011 03:14:15 +0000 (03:14 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 10 May 2011 03:14:15 +0000 (03:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131119 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCStreamer.h
lib/MC/MCAsmStreamer.cpp
lib/MC/MCELFStreamer.cpp
lib/MC/MCMachOStreamer.cpp
lib/MC/MCStreamer.cpp

index 97f93589da55aec851ac6b39e47c1d2935e55acd..cf4a9e5edc73eb3b1fbb6870cedf40f9ce9d752d 100644 (file)
@@ -73,6 +73,8 @@ namespace llvm {
     const MCExpr *ForceExpAbs(MCStreamer *Streamer, MCContext &Context,
                               const MCExpr* Expr);
 
+    void EmitFrames(bool usingCFI);
+
   public:
     virtual ~MCStreamer();
 
index 9717c016a92b49816a25eb3695d9ea4e783b77e4..c7fc190b87608549d98e126c0afd5dc8520680e7 100644 (file)
@@ -1070,8 +1070,8 @@ void MCAsmStreamer::Finish() {
   if (getContext().hasDwarfFiles() && !UseLoc)
     MCDwarfFileTable::Emit(this);
 
-  if (getNumFrameInfos() && !UseCFI)
-    MCDwarfFrameEmitter::Emit(*this, false);
+  if (!UseCFI)
+    EmitFrames(false);
 }
 
 MCStreamer *llvm::createAsmStreamer(MCContext &Context,
index be8e2e3891fed11142b4a66f27edf0aa4d7d1c7b..7808e76203fcde41458a75d2eb06441622710b5f 100644 (file)
@@ -345,8 +345,7 @@ void MCELFStreamer::EmitInstToData(const MCInst &Inst) {
 }
 
 void MCELFStreamer::Finish() {
-  if (getNumFrameInfos())
-    MCDwarfFrameEmitter::Emit(*this, true);
+  EmitFrames(true);
 
   for (std::vector<LocalCommon>::const_iterator i = LocalCommons.begin(),
                                                 e = LocalCommons.end();
index 3da5b49f5405dcc54ce60afe306815d7c918f2af..12aeb4f48fda7a9bcb3abed67b972c6352769f5e 100644 (file)
@@ -377,8 +377,7 @@ void MCMachOStreamer::EmitInstToData(const MCInst &Inst) {
 }
 
 void MCMachOStreamer::Finish() {
-  if (getNumFrameInfos())
-    MCDwarfFrameEmitter::Emit(*this, true);
+  EmitFrames(true);
 
   // We have to set the fragment atom associations so we can relax properly for
   // Mach-O.
index 06db000d11c4b586d625e1ee4e333e8bd97d6562..d84e0c2369d3e16e160efd67760066f3c7c32407 100644 (file)
@@ -363,3 +363,11 @@ void MCStreamer::EmitRawText(const Twine &T) {
   T.toVector(Str);
   EmitRawText(Str.str());
 }
+
+void MCStreamer::EmitFrames(bool usingCFI) {
+  if (!getNumFrameInfos())
+    return;
+
+  if (EmitEHFrame)
+    MCDwarfFrameEmitter::Emit(*this, usingCFI);
+}