[WinEH] Pull Adjectives and CatchObj out of the catchpad arg list
[oota-llvm.git] / lib / CodeGen / PrologEpilogInserter.cpp
index f169f485af3a83fa7554aceb3ef36aac4959d9a5..54f5553d3e15b8456fa8ff4d680614b812360bc4 100644 (file)
@@ -819,6 +819,16 @@ void PEI::replaceFrameIndices(MachineFunction &Fn) {
     if (FuncInfo.UnwindHelpFrameIdx != INT_MAX)
       FuncInfo.UnwindHelpFrameOffset = TFI.getFrameIndexReferenceFromSP(
           Fn, FuncInfo.UnwindHelpFrameIdx, FrameReg);
+    for (WinEHTryBlockMapEntry &TBME : FuncInfo.TryBlockMap) {
+      for (WinEHHandlerType &H : TBME.HandlerArray) {
+        unsigned UnusedReg;
+        if (H.CatchObj.FrameIndex == INT_MAX)
+          H.CatchObj.FrameOffset = INT_MAX;
+        else
+          H.CatchObj.FrameOffset =
+              TFI.getFrameIndexReference(Fn, H.CatchObj.FrameIndex, UnusedReg);
+      }
+    }
   } else if (MMI.hasWinEHFuncInfo(F)) {
     WinEHFuncInfo &FuncInfo = MMI.getWinEHFuncInfo(Fn.getFunction());
     auto I = FuncInfo.CatchHandlerParentFrameObjIdx.find(F);