| OLD | NEW |
| 1 //===- subzero/src/IceRegAlloc.cpp - Linear-scan implementation -----------===// | 1 //===- subzero/src/IceRegAlloc.cpp - Linear-scan implementation -----------===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // This file implements the LinearScan class, which performs the | 10 // This file implements the LinearScan class, which performs the |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 } | 226 } |
| 227 } | 227 } |
| 228 Str << "\n"; | 228 Str << "\n"; |
| 229 } | 229 } |
| 230 | 230 |
| 231 Variable *Prefer = Cur.Var->getPreferredRegister(); | 231 Variable *Prefer = Cur.Var->getPreferredRegister(); |
| 232 int32_t PreferReg = Prefer && Prefer->hasRegTmp() ? Prefer->getRegNumTmp() | 232 int32_t PreferReg = Prefer && Prefer->hasRegTmp() ? Prefer->getRegNumTmp() |
| 233 : Variable::NoRegister; | 233 : Variable::NoRegister; |
| 234 bool AllowedToOverlap = Cur.Var->getRegisterOverlap() && | 234 bool AllowedToOverlap = Cur.Var->getRegisterOverlap() && |
| 235 PreferReg != Variable::NoRegister && | 235 PreferReg != Variable::NoRegister && |
| 236 RegMask[PreferReg] && |
| 236 !PrecoloredUnhandled[PreferReg]; | 237 !PrecoloredUnhandled[PreferReg]; |
| 237 if (PreferReg != Variable::NoRegister && | 238 if (PreferReg != Variable::NoRegister && |
| 238 (AllowedToOverlap || Free[PreferReg])) { | 239 (AllowedToOverlap || Free[PreferReg])) { |
| 239 // First choice: a preferred register that is either free or is | 240 // First choice: a preferred register that is either free or is |
| 240 // allowed to overlap with its linked variable. | 241 // allowed to overlap with its linked variable. |
| 241 Cur.Var->setRegNumTmp(PreferReg); | 242 Cur.Var->setRegNumTmp(PreferReg); |
| 242 if (Func->getContext()->isVerbose(IceV_LinearScan)) { | 243 if (Func->getContext()->isVerbose(IceV_LinearScan)) { |
| 243 Str << "Preferring "; | 244 Str << "Preferring "; |
| 244 Cur.dump(Func); | 245 Cur.dump(Func); |
| 245 Str << "\n"; | 246 Str << "\n"; |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 } | 469 } |
| 469 Str << "++++++ Inactive:\n"; | 470 Str << "++++++ Inactive:\n"; |
| 470 for (UnorderedRanges::const_iterator I = Inactive.begin(), E = Inactive.end(); | 471 for (UnorderedRanges::const_iterator I = Inactive.begin(), E = Inactive.end(); |
| 471 I != E; ++I) { | 472 I != E; ++I) { |
| 472 I->dump(Func); | 473 I->dump(Func); |
| 473 Str << "\n"; | 474 Str << "\n"; |
| 474 } | 475 } |
| 475 } | 476 } |
| 476 | 477 |
| 477 } // end of namespace Ice | 478 } // end of namespace Ice |
| OLD | NEW |