diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-10-01 18:44:59 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-10-01 18:44:59 +0000 |
commit | f828a0ccc7ecd54e71240e404f6c47c822ea6619 (patch) | |
tree | 0e8e5270d4dde3ce7eab6f0a6f91c5a8ef0c3abf /llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp | |
parent | 74697714c2aca0ab35f6d0b86cb753253174418c (diff) | |
download | bcm5719-llvm-f828a0ccc7ecd54e71240e404f6c47c822ea6619.tar.gz bcm5719-llvm-f828a0ccc7ecd54e71240e404f6c47c822ea6619.zip |
[WinEH] Make FuncletLayout more robust against catchret
Catchret transfers control from a catch funclet to an earlier funclet.
However, it is not completely clear which funclet the catchret target is
part of. Make this clear by stapling the catchret target's funclet
membership onto the CATCHRET SDAG node.
llvm-svn: 249052
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp index baf9ee990ea..7da68deaaa3 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp @@ -290,9 +290,11 @@ void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf, const Function *WinEHParentFn = MMI.getWinEHParent(&fn); if (Personality == EHPersonality::MSVC_CXX) calculateWinCXXEHStateNumbers(WinEHParentFn, EHInfo); - else + else if (isAsynchronousEHPersonality(Personality)) calculateSEHStateNumbers(WinEHParentFn, EHInfo); + calculateCatchReturnSuccessorColors(WinEHParentFn, EHInfo); + // Map all BB references in the WinEH data to MBBs. for (WinEHTryBlockMapEntry &TBME : EHInfo.TryBlockMap) { for (WinEHHandlerType &H : TBME.HandlerArray) { |