Fix assertion when C++ EH filters are present in functions using SEH

Should fix PR22305.

llvm-svn: 226969
diff --git a/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp b/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp
index a1719a5..ff12d5d 100644
--- a/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp
@@ -221,12 +221,11 @@
 
     // Do a parallel iteration across typeids and clause labels, skipping filter
     // clauses.
-    assert(LPad->TypeIds.size() == LPad->ClauseLabels.size());
+    size_t NextClauseLabel = 0;
     for (size_t I = 0, E = LPad->TypeIds.size(); I < E; ++I) {
       // AddLandingPadInfo stores the clauses in reverse, but there is a FIXME
       // to change that.
       int Selector = LPad->TypeIds[E - I - 1];
-      MCSymbol *ClauseLabel = LPad->ClauseLabels[I];
 
       // Ignore C++ filter clauses in SEH.
       // FIXME: Implement cleanup clauses.
@@ -243,6 +242,7 @@
         else  // Otherwise, this is a "catch i8* null", or catch all.
           Asm->OutStreamer.EmitIntValue(1, 4);
       }
+      MCSymbol *ClauseLabel = LPad->ClauseLabels[NextClauseLabel++];
       Asm->OutStreamer.EmitValue(createImageRel32(ClauseLabel), 4);
     }
   }