[WinEH] Mark funclet entries and exits as clobbering all registers
authorReid Kleckner <rnk@google.com>
Fri, 6 Nov 2015 17:06:38 +0000 (17:06 +0000)
committerReid Kleckner <rnk@google.com>
Fri, 6 Nov 2015 17:06:38 +0000 (17:06 +0000)
commitf0a04c06ab5460e6b2fe902ce089d92d0802227e
tree439a1a2b4decc7d3b9cacf57228ec985c0923093
parent8be4aacc6ee3d08ba4a88598a9d0251dc22e0825
[WinEH] Mark funclet entries and exits as clobbering all registers

Summary:
In this implementation, LiveIntervalAnalysis invents a few register
masks on basic block boundaries that preserve no registers. The nice
thing about this is that it prevents the prologue inserter from thinking
it needs to spill all XMM CSRs, because it doesn't see any explicit
physreg defs in the MI.

Reviewers: MatzeB, qcolombet, JosephTremoulet, majnemer

Subscribers: MatzeB, llvm-commits

Differential Revision: http://reviews.llvm.org/D14407

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252318 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/MachineBasicBlock.h
include/llvm/Target/TargetRegisterInfo.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/MachineBasicBlock.cpp
lib/Target/ARM/ARMBaseRegisterInfo.h
lib/Target/PowerPC/PPCRegisterInfo.h
lib/Target/X86/X86RegisterInfo.h
test/CodeGen/X86/catchpad-regmask.ll [new file with mode: 0644]
test/CodeGen/X86/cleanuppad-large-codemodel.ll [new file with mode: 0644]