| 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 /// \file | 10 /// \file |
| (...skipping 820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 | 831 |
| 832 // Allocate memory once outside the loop. | 832 // Allocate memory once outside the loop. |
| 833 IterationState Iter; | 833 IterationState Iter; |
| 834 Iter.Weights.reserve(NumRegisters); | 834 Iter.Weights.reserve(NumRegisters); |
| 835 Iter.PrecoloredUnhandledMask.reserve(NumRegisters); | 835 Iter.PrecoloredUnhandledMask.reserve(NumRegisters); |
| 836 | 836 |
| 837 while (!Unhandled.empty()) { | 837 while (!Unhandled.empty()) { |
| 838 Iter.Cur = Unhandled.back(); | 838 Iter.Cur = Unhandled.back(); |
| 839 Unhandled.pop_back(); | 839 Unhandled.pop_back(); |
| 840 dumpLiveRangeTrace("\nConsidering ", Iter.Cur); | 840 dumpLiveRangeTrace("\nConsidering ", Iter.Cur); |
| 841 assert(Target->getRegistersForVariable(Iter.Cur).any()); |
| 841 Iter.RegMask = RegMaskFull & Target->getRegistersForVariable(Iter.Cur); | 842 Iter.RegMask = RegMaskFull & Target->getRegistersForVariable(Iter.Cur); |
| 842 KillsRange.trim(Iter.Cur->getLiveRange().getStart()); | 843 KillsRange.trim(Iter.Cur->getLiveRange().getStart()); |
| 843 | 844 |
| 844 // Check for pre-colored ranges. If Cur is pre-colored, it definitely gets | 845 // Check for pre-colored ranges. If Cur is pre-colored, it definitely gets |
| 845 // that register. Previously processed live ranges would have avoided that | 846 // that register. Previously processed live ranges would have avoided that |
| 846 // register due to it being pre-colored. Future processed live ranges won't | 847 // register due to it being pre-colored. Future processed live ranges won't |
| 847 // evict that register because the live range has infinite weight. | 848 // evict that register because the live range has infinite weight. |
| 848 if (Iter.Cur->hasReg()) { | 849 if (Iter.Cur->hasReg()) { |
| 849 allocatePrecoloredRegister(Iter.Cur); | 850 allocatePrecoloredRegister(Iter.Cur); |
| 850 continue; | 851 continue; |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 977 Str << "\n"; | 978 Str << "\n"; |
| 978 } | 979 } |
| 979 Str << "++++++ Inactive:\n"; | 980 Str << "++++++ Inactive:\n"; |
| 980 for (const Variable *Item : Inactive) { | 981 for (const Variable *Item : Inactive) { |
| 981 dumpLiveRange(Item, Func); | 982 dumpLiveRange(Item, Func); |
| 982 Str << "\n"; | 983 Str << "\n"; |
| 983 } | 984 } |
| 984 } | 985 } |
| 985 | 986 |
| 986 } // end of namespace Ice | 987 } // end of namespace Ice |
| OLD | NEW |