summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2013-07-03 23:56:24 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2013-07-03 23:56:24 +0000
commitfa6a7b9b02e2c090f7086e98b8df70c577e745c5 (patch)
tree2a1dc1ac574bb45116991e95930e8b812cf6495f /llvm/lib/Target/X86/X86ISelLowering.cpp
parent533c3bf2d6e468856a980c601039cdce0cb81dc7 (diff)
downloadbcm5719-llvm-fa6a7b9b02e2c090f7086e98b8df70c577e745c5.tar.gz
bcm5719-llvm-fa6a7b9b02e2c090f7086e98b8df70c577e745c5.zip
Simplify landing pad lowering.
Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering landing pad arguments. These nodes were previously legalized into CopyFromReg nodes, but that never worked properly because the CopyFromReg node weren't guaranteed to be scheduled at the top of the basic block. This meant the exception pointer and selector registers could be clobbered before being copied to a virtual register. This patch copies the two physical registers to virtual registers at the beginning of the basic block, and lowers the landingpad instruction directly to two CopyFromReg nodes reading the *virtual* registers. This is safe because virtual registers don't get clobbered. A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION nodes. llvm-svn: 185595
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud