| 234 | } |
| 235 | |
| 236 | void State::ValueAnalysis::FnCallRanges::keep_only_writes() { |
| 237 | for (auto I = begin(); I != end(); ) { |
| 238 | auto &[calls, access] = I->second; |
| 239 | for (auto II = calls.begin(); II != calls.end(); ) { |
| 240 | if (!II->second) |
| 241 | II = calls.erase(II); |
| 242 | else |
| 243 | ++II; |
| 244 | } |
| 245 | if (calls.empty()) |
| 246 | I = erase(I); |
| 247 | else |
| 248 | ++I; |
| 249 | } |
| 250 | } |
| 251 | |
| 252 | void State::ValueAnalysis::FnCallRanges::meet_with(const FnCallRanges &other) { |
| 253 | for (auto &[fn, pair] : other) { |