Assumes that both begin + len don't overflow
| 185 | |
| 186 | // Assumes that both begin + len don't overflow |
| 187 | static expr disjoint(const expr &begin1, const expr &len1, const expr &align1, |
| 188 | const expr &begin2, const expr &len2, const expr &align2) { |
| 189 | // if blocks have the same alignment they can't start in the middle of |
| 190 | // each other. We just need to ensure they have a different addr. |
| 191 | if (align1.eq(align2) && align_ge_size(align1, len1) && |
| 192 | align_ge_size(align2, len2)) |
| 193 | return begin1 != begin2; |
| 194 | return begin1.uge(begin2 + len2) || begin2.uge(begin1 + len1); |
| 195 | } |
| 196 | |
| 197 | static expr load_bv(const expr &var, const expr &idx0) { |
| 198 | auto bw = var.bits(); |
no test coverage detected