Generate compact unwind encoding from CFI directives.
[oota-llvm.git] / lib / MC / MCStreamer.cpp
index fb43a4adbda0b6d7bc398eed197dddf16418c8bf..806bec989688fa468e35f0897d6ad284d0fcc464 100644 (file)
@@ -10,6 +10,7 @@
 #include "llvm/MC/MCStreamer.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/Twine.h"
+#include "llvm/MC/MCAsmBackend.h"
 #include "llvm/MC/MCAsmInfo.h"
 #include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCExpr.h"
@@ -72,6 +73,14 @@ raw_ostream &MCStreamer::GetCommentOS() {
   return nulls();
 }
 
+void MCStreamer::generateCompactUnwindEncodings(MCAsmBackend &MAB) {
+  for (std::vector<MCDwarfFrameInfo>::iterator I = FrameInfos.begin(),
+         E = FrameInfos.end(); I != E; ++I)
+    if (!I->CompactUnwindEncoding)
+      I->CompactUnwindEncoding =
+        MAB.generateCompactUnwindEncoding(I->Instructions);
+}
+
 void MCStreamer::EmitDwarfSetLineAddr(int64_t LineDelta,
                                       const MCSymbol *Label, int PointerSize) {
   // emit the sequence to set the address