[WinEH] Make FuncletLayout more robust against catchret
authorDavid Majnemer <david.majnemer@gmail.com>
Thu, 1 Oct 2015 18:44:59 +0000 (18:44 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Thu, 1 Oct 2015 18:44:59 +0000 (18:44 +0000)
commit68754da26da6a2068b645573270564db6a5d0de5
tree5d1599a65f671f9fca96952b8d2adc0926efa845
parent40fed821f0727302d811b39a60277aa9af6d6bee
[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249052 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
include/llvm/CodeGen/WinEHFuncInfo.h
include/llvm/Target/TargetInstrInfo.h
include/llvm/Target/TargetSelectionDAG.td
lib/CodeGen/FuncletLayout.cpp
lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/CodeGen/WinEHPrepare.cpp
lib/Target/X86/X86FrameLowering.cpp
lib/Target/X86/X86InstrCompiler.td
lib/Target/X86/X86InstrInfo.cpp
lib/Target/X86/X86MCInstLower.cpp
test/CodeGen/X86/funclet-layout.ll
utils/TableGen/InstrInfoEmitter.cpp