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 |