[WinEH] Teach AsmPrinter about funclets
[oota-llvm.git] / lib / CodeGen / AsmPrinter / AsmPrinter.cpp
index 141cc0fc6e8f3e77f3ee44df8e4b42bbe11fb203..52dbd5a9df4092d8fbc1cbdf310a2eb1bc2ff273 100644 (file)
@@ -2459,6 +2459,14 @@ static void emitBasicBlockLoopComments(const MachineBasicBlock &MBB,
 /// MachineBasicBlock, an alignment (if present) and a comment describing
 /// it if appropriate.
 void AsmPrinter::EmitBasicBlockStart(const MachineBasicBlock &MBB) const {
+  // End the previous funclet and start a new one.
+  if (MBB.isEHFuncletEntry()) {
+    for (const HandlerInfo &HI : Handlers) {
+      HI.Handler->endFunclet();
+      HI.Handler->beginFunclet(MBB);
+    }
+  }
+
   // Emit an alignment directive for this block, if needed.
   if (unsigned Align = MBB.getAlignment())
     EmitAlignment(Align);