| 113 | } |
| 114 | |
| 115 | void State::ValueAnalysis::FnCallRanges::inc(const string &name, |
| 116 | const SMTMemoryAccess &access) { |
| 117 | bool canwrite = !access.canWriteSomething().isFalse(); |
| 118 | |
| 119 | auto [I, inserted] = try_emplace(name); |
| 120 | if (inserted) { |
| 121 | I->second.first.emplace(1, canwrite); |
| 122 | I->second.second = access; |
| 123 | } else { |
| 124 | set<pair<unsigned, bool>> new_set; |
| 125 | for (auto [n, writes0] : I->second.first) { |
| 126 | new_set.emplace(n+1, writes0 | canwrite); |
| 127 | } |
| 128 | I->second.first = std::move(new_set); |
| 129 | I->second.second |= access; |
| 130 | } |
| 131 | } |
| 132 | |
| 133 | bool |
| 134 | State::ValueAnalysis::FnCallRanges::overlaps(const string &callee, |
no test coverage detected