| Index: src/IceTargetLoweringX86BaseImpl.h
|
| diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h
|
| index d92ba88a544a93d212cff0ff8ad86835544046e7..d7d3e75b09497bb5ba2ec5ca64548409ea43aaf0 100644
|
| --- a/src/IceTargetLoweringX86BaseImpl.h
|
| +++ b/src/IceTargetLoweringX86BaseImpl.h
|
| @@ -720,12 +720,12 @@ Variable *TargetX86Base<Machine>::getPhysicalRegister(SizeT RegNum, Type Ty) {
|
| Reg = Func->makeVariable(Ty);
|
| Reg->setRegNum(RegNum);
|
| PhysicalRegisters[Ty][RegNum] = Reg;
|
| - // Specially mark esp as an "argument" so that it is considered live upon
|
| - // function entry.
|
| - if (RegNum == Traits::RegisterSet::Reg_esp) {
|
| - Func->addImplicitArg(Reg);
|
| - Reg->setIgnoreLiveness();
|
| - }
|
| + // Specially mark a named physical register as an "argument" so that it is
|
| + // considered live upon function entry. Otherwise it's possible to get
|
| + // liveness validation errors for saving callee-save registers.
|
| + Func->addImplicitArg(Reg);
|
| + // Don't bother tracking the live range of a named physical register.
|
| + Reg->setIgnoreLiveness();
|
| }
|
| return Reg;
|
| }
|
|
|