| 203 | } |
| 204 | |
| 205 | bool State::ValueAnalysis::FnCallRanges::isLargerThanInclReads( |
| 206 | const FnCallRanges &other) const { |
| 207 | for (auto &[fn, pair] : *this) { |
| 208 | auto &[calls, access] = pair; |
| 209 | auto I = other.find(fn); |
| 210 | if (I == other.end()) |
| 211 | continue; |
| 212 | |
| 213 | auto first_val = calls.begin()->first; |
| 214 | auto other_last_val = I->second.first.rbegin()->first; |
| 215 | if (first_val < other_last_val) |
| 216 | return false; |
| 217 | } |
| 218 | |
| 219 | for (auto &[fn, pair] : other) { |
| 220 | if (!count(fn)) |
| 221 | return false; |
| 222 | } |
| 223 | return true; |
| 224 | } |
| 225 | |
| 226 | State::ValueAnalysis::FnCallRanges |
| 227 | State::ValueAnalysis::FnCallRanges::project(const string &name) const { |
no test coverage detected