mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
X86: VZeroUpperInserter: shortcut should not trigger if we have any function live-ins.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225419 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a217f983d6
commit
e081880cc1
@ -254,16 +254,20 @@ bool VZeroUpperInserter::runOnMachineFunction(MachineFunction &MF) {
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
EverMadeChange = false;
|
||||
|
||||
bool FnHasLiveInYmm = checkFnHasLiveInYmm(MRI);
|
||||
|
||||
// Fast check: if the function doesn't use any ymm registers, we don't need
|
||||
// to insert any VZEROUPPER instructions. This is constant-time, so it is
|
||||
// cheap in the common case of no ymm use.
|
||||
bool YMMUsed = false;
|
||||
const TargetRegisterClass *RC = &X86::VR256RegClass;
|
||||
for (TargetRegisterClass::iterator i = RC->begin(), e = RC->end();
|
||||
i != e; i++) {
|
||||
if (!MRI.reg_nodbg_empty(*i)) {
|
||||
YMMUsed = true;
|
||||
break;
|
||||
bool YMMUsed = FnHasLiveInYmm;
|
||||
if (!YMMUsed) {
|
||||
const TargetRegisterClass *RC = &X86::VR256RegClass;
|
||||
for (TargetRegisterClass::iterator i = RC->begin(), e = RC->end(); i != e;
|
||||
i++) {
|
||||
if (!MRI.reg_nodbg_empty(*i)) {
|
||||
YMMUsed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!YMMUsed) {
|
||||
@ -282,7 +286,7 @@ bool VZeroUpperInserter::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
// If any YMM regs are live in to this function, add the entry block to the
|
||||
// DirtySuccessors list
|
||||
if (checkFnHasLiveInYmm(MRI))
|
||||
if (FnHasLiveInYmm)
|
||||
addDirtySuccessor(MF.front());
|
||||
|
||||
// Re-visit all blocks that are successors of EXITS_DIRTY bsocks. Add
|
||||
|
Loading…
x
Reference in New Issue
Block a user