Revert "[SEH] Remove the old __C_specific_handler code now that WinEHPrepare works"
[oota-llvm.git] / include / llvm / CodeGen / MachineModuleInfo.h
index d53fdd4ce5ad1d85efea7c18e6de002cbeffc375..d631f7c4c7bd49b27ba2eb972690415dbb8f6fc0 100644 (file)
@@ -77,6 +77,7 @@ struct LandingPadInfo {
   MachineBasicBlock *LandingPadBlock;      // Landing pad block.
   SmallVector<MCSymbol *, 1> BeginLabels;  // Labels prior to invoke.
   SmallVector<MCSymbol *, 1> EndLabels;    // Labels after invoke.
+  SmallVector<MCSymbol *, 1> ClauseLabels; // Labels for each clause.
   SmallVector<SEHHandler, 1> SEHHandlers;  // SEH handlers active at this lpad.
   MCSymbol *LandingPadLabel;               // Label at beginning of landing pad.
   const Function *Personality;             // Personality function.
@@ -360,6 +361,11 @@ public:
   ///
   void addCleanup(MachineBasicBlock *LandingPad);
 
+  /// Add a clause for a landing pad. Returns a new label for the clause. This
+  /// is used by EH schemes that have more than one landing pad. In this case,
+  /// each clause gets its own basic block.
+  MCSymbol *addClauseForLandingPad(MachineBasicBlock *LandingPad);
+
   void addSEHCatchHandler(MachineBasicBlock *LandingPad, const Function *Filter,
                           const BlockAddress *RecoverLabel);