Lines Matching refs:FuncInfo
145 static int addUnwindMapEntry(WinEHFuncInfo &FuncInfo, int ToState, in addUnwindMapEntry() argument
150 FuncInfo.CxxUnwindMap.push_back(UME); in addUnwindMapEntry()
151 return FuncInfo.getLastStateNumber(); in addUnwindMapEntry()
154 static void addTryBlockMapEntry(WinEHFuncInfo &FuncInfo, int TryLow, in addTryBlockMapEntry() argument
178 FuncInfo.TryBlockMap.push_back(TBME); in addTryBlockMapEntry()
189 WinEHFuncInfo &FuncInfo) { in calculateStateNumbersForInvokes() argument
217 auto BaseStateI = FuncInfo.FuncletBaseStateMap.find(FuncletPad); in calculateStateNumbersForInvokes()
218 if (BaseStateI != FuncInfo.FuncletBaseStateMap.end()) in calculateStateNumbersForInvokes()
223 FuncInfo.InvokeStateMap[II] = BaseState; in calculateStateNumbersForInvokes()
226 assert(FuncInfo.EHPadStateMap.count(PadInst) && "EH Pad has no state!"); in calculateStateNumbersForInvokes()
227 FuncInfo.InvokeStateMap[II] = FuncInfo.EHPadStateMap[PadInst]; in calculateStateNumbersForInvokes()
375 static void calculateCXXStateNumbers(WinEHFuncInfo &FuncInfo, in calculateCXXStateNumbers() argument
382 assert(FuncInfo.EHPadStateMap.count(CatchSwitch) == 0 && in calculateCXXStateNumbers()
390 int TryLow = addUnwindMapEntry(FuncInfo, ParentState, nullptr); in calculateCXXStateNumbers()
391 FuncInfo.EHPadStateMap[CatchSwitch] = TryLow; in calculateCXXStateNumbers()
395 calculateCXXStateNumbers(FuncInfo, PredBlock->getFirstNonPHI(), in calculateCXXStateNumbers()
397 int CatchLow = addUnwindMapEntry(FuncInfo, ParentState, nullptr); in calculateCXXStateNumbers()
408 addTryBlockMapEntry(FuncInfo, TryLow, TryHigh, CatchLow, Handlers); in calculateCXXStateNumbers()
409 unsigned TBMEIdx = FuncInfo.TryBlockMap.size() - 1; in calculateCXXStateNumbers()
412 FuncInfo.FuncletBaseStateMap[CatchPad] = CatchLow; in calculateCXXStateNumbers()
413 FuncInfo.EHPadStateMap[CatchPad] = CatchLow; in calculateCXXStateNumbers()
419 calculateCXXStateNumbers(FuncInfo, UserI, CatchLow); in calculateCXXStateNumbers()
427 calculateCXXStateNumbers(FuncInfo, UserI, CatchLow); in calculateCXXStateNumbers()
431 int CatchHigh = FuncInfo.getLastStateNumber(); in calculateCXXStateNumbers()
434 FuncInfo.TryBlockMap[TBMEIdx].CatchHigh = CatchHigh; in calculateCXXStateNumbers()
436 addTryBlockMapEntry(FuncInfo, TryLow, TryHigh, CatchHigh, Handlers); in calculateCXXStateNumbers()
448 if (FuncInfo.EHPadStateMap.count(CleanupPad)) in calculateCXXStateNumbers()
451 int CleanupState = addUnwindMapEntry(FuncInfo, ParentState, BB); in calculateCXXStateNumbers()
452 FuncInfo.EHPadStateMap[CleanupPad] = CleanupState; in calculateCXXStateNumbers()
458 calculateCXXStateNumbers(FuncInfo, PredBlock->getFirstNonPHI(), in calculateCXXStateNumbers()
471 static int addSEHExcept(WinEHFuncInfo &FuncInfo, int ParentState, in addSEHExcept() argument
478 FuncInfo.SEHUnwindMap.push_back(Entry); in addSEHExcept()
479 return FuncInfo.SEHUnwindMap.size() - 1; in addSEHExcept()
482 static int addSEHFinally(WinEHFuncInfo &FuncInfo, int ParentState, in addSEHFinally() argument
489 FuncInfo.SEHUnwindMap.push_back(Entry); in addSEHFinally()
490 return FuncInfo.SEHUnwindMap.size() - 1; in addSEHFinally()
496 static void calculateSEHStateNumbers(WinEHFuncInfo &FuncInfo, in calculateSEHStateNumbers() argument
503 assert(FuncInfo.EHPadStateMap.count(CatchSwitch) == 0 && in calculateSEHStateNumbers()
518 int TryState = addSEHExcept(FuncInfo, ParentState, Filter, CatchPadBB); in calculateSEHStateNumbers()
521 FuncInfo.EHPadStateMap[CatchSwitch] = TryState; in calculateSEHStateNumbers()
522 FuncInfo.EHPadStateMap[CatchPad] = TryState; in calculateSEHStateNumbers()
528 calculateSEHStateNumbers(FuncInfo, PredBlock->getFirstNonPHI(), in calculateSEHStateNumbers()
538 calculateSEHStateNumbers(FuncInfo, UserI, ParentState); in calculateSEHStateNumbers()
546 calculateSEHStateNumbers(FuncInfo, UserI, ParentState); in calculateSEHStateNumbers()
554 if (FuncInfo.EHPadStateMap.count(CleanupPad)) in calculateSEHStateNumbers()
557 int CleanupState = addSEHFinally(FuncInfo, ParentState, BB); in calculateSEHStateNumbers()
558 FuncInfo.EHPadStateMap[CleanupPad] = CleanupState; in calculateSEHStateNumbers()
564 calculateSEHStateNumbers(FuncInfo, PredBlock->getFirstNonPHI(), in calculateSEHStateNumbers()
588 WinEHFuncInfo &FuncInfo) { in calculateSEHStateNumbers() argument
590 if (!FuncInfo.SEHUnwindMap.empty()) in calculateSEHStateNumbers()
599 ::calculateSEHStateNumbers(FuncInfo, FirstNonPHI, -1); in calculateSEHStateNumbers()
602 calculateStateNumbersForInvokes(Fn, FuncInfo); in calculateSEHStateNumbers()
607 calculateSEHStateForAsynchEH(EntryBB, -1, FuncInfo); in calculateSEHStateNumbers()
612 WinEHFuncInfo &FuncInfo) { in calculateWinCXXEHStateNumbers() argument
614 if (!FuncInfo.EHPadStateMap.empty()) in calculateWinCXXEHStateNumbers()
623 calculateCXXStateNumbers(FuncInfo, FirstNonPHI, -1); in calculateWinCXXEHStateNumbers()
626 calculateStateNumbersForInvokes(Fn, FuncInfo); in calculateWinCXXEHStateNumbers()
631 calculateCXXStateForAsynchEH(EntryBB, -1, FuncInfo); in calculateWinCXXEHStateNumbers()
635 static int addClrEHHandler(WinEHFuncInfo &FuncInfo, int HandlerParentState, in addClrEHHandler() argument
644 FuncInfo.ClrEHUnwindMap.push_back(Entry); in addClrEHHandler()
645 return FuncInfo.ClrEHUnwindMap.size() - 1; in addClrEHHandler()
649 WinEHFuncInfo &FuncInfo) { in calculateClrEHStateNumbers() argument
651 if (!FuncInfo.EHPadStateMap.empty()) in calculateClrEHStateNumbers()
709 int CleanupState = addClrEHHandler(FuncInfo, HandlerParentState, -1, in calculateClrEHStateNumbers()
717 FuncInfo.EHPadStateMap[Cleanup] = CleanupState; in calculateClrEHStateNumbers()
731 addClrEHHandler(FuncInfo, HandlerParentState, FollowerState, in calculateClrEHStateNumbers()
739 FuncInfo.EHPadStateMap[Catch] = CatchState; in calculateClrEHStateNumbers()
744 FuncInfo.EHPadStateMap[CatchSwitch] = CatchState; in calculateClrEHStateNumbers()
751 for (ClrEHUnwindMapEntry &Entry : llvm::reverse(FuncInfo.ClrEHUnwindMap)) { in calculateClrEHStateNumbers()
785 int UserState = FuncInfo.EHPadStateMap[ChildCleanup]; in calculateClrEHStateNumbers()
787 FuncInfo.ClrEHUnwindMap[UserState].TryParentState; in calculateClrEHStateNumbers()
790 FuncInfo.ClrEHUnwindMap[UserUnwindState].Handler); in calculateClrEHStateNumbers()
837 UnwindDestState = FuncInfo.EHPadStateMap[UnwindDest->getFirstNonPHI()]; in calculateClrEHStateNumbers()
844 calculateStateNumbersForInvokes(Fn, FuncInfo); in calculateClrEHStateNumbers()