equal
deleted
inserted
replaced
53 // |
53 // |
54 // The reaching def's is a simple 1-pass worklist approach. I tried a clever |
54 // The reaching def's is a simple 1-pass worklist approach. I tried a clever |
55 // breadth-first approach but it was worse (showed O(n^2) in the |
55 // breadth-first approach but it was worse (showed O(n^2) in the |
56 // pick-next-block code). |
56 // pick-next-block code). |
57 // |
57 // |
58 // The relevent data is kept in a struct of arrays (it could just as well be |
58 // The relevant data is kept in a struct of arrays (it could just as well be |
59 // an array of structs, but the struct-of-arrays is generally a little more |
59 // an array of structs, but the struct-of-arrays is generally a little more |
60 // efficient). The arrays are indexed by register number (including |
60 // efficient). The arrays are indexed by register number (including |
61 // stack-slots as registers) and so is bounded by 200 to 300 elements in |
61 // stack-slots as registers) and so is bounded by 200 to 300 elements in |
62 // practice. One array will map to a reaching def Node (or NULL for |
62 // practice. One array will map to a reaching def Node (or NULL for |
63 // conflict/dead). The other array will map to a callee-saved register or |
63 // conflict/dead). The other array will map to a callee-saved register or |