mirror of
https://github.com/Z3Prover/z3
synced 2026-04-04 18:59:02 +00:00
Merge remote-tracking branch 'origin/master' into c3
# Conflicts: # .github/workflows/qf-s-benchmark.lock.yml # .github/workflows/qf-s-benchmark.md # .github/workflows/zipt-code-reviewer.lock.yml # .github/workflows/zipt-code-reviewer.md # .gitignore # src/ast/rewriter/seq_rewriter.cpp # src/test/main.cpp
This commit is contained in:
commit
6a6f9b1892
185 changed files with 16422 additions and 5692 deletions
|
|
@ -214,6 +214,15 @@ void shl(std::span<unsigned const> src, unsigned k, std::span<unsigned> dst) {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (bit_shift == 0) {
|
||||
if (src_sz > dst_sz)
|
||||
src_sz = dst_sz;
|
||||
for (size_t i = 0; i < src_sz; ++i)
|
||||
dst[i] = src[i];
|
||||
for (size_t i = src_sz; i < dst_sz; ++i)
|
||||
dst[i] = 0;
|
||||
return;
|
||||
}
|
||||
unsigned comp_shift = (8 * sizeof(unsigned)) - bit_shift;
|
||||
unsigned prev = 0;
|
||||
if (src_sz > dst_sz)
|
||||
|
|
@ -278,7 +287,11 @@ void shr(std::span<unsigned const> src, unsigned k, std::span<unsigned> dst) {
|
|||
}
|
||||
else {
|
||||
SASSERT(new_sz == sz);
|
||||
SASSERT(bit_shift != 0);
|
||||
if (bit_shift == 0) {
|
||||
for (size_t i = 0; i < sz; ++i)
|
||||
dst[i] = src[i];
|
||||
return;
|
||||
}
|
||||
unsigned i = 0;
|
||||
for (; i < new_sz - 1; ++i) {
|
||||
dst[i] = src[i];
|
||||
|
|
@ -327,20 +340,26 @@ void shr(std::span<unsigned const> src, unsigned k, std::span<unsigned> dst) {
|
|||
}
|
||||
else {
|
||||
SASSERT(new_sz == src_sz);
|
||||
SASSERT(bit_shift != 0);
|
||||
auto sz = new_sz;
|
||||
if (new_sz > dst_sz)
|
||||
sz = dst_sz;
|
||||
unsigned i = 0;
|
||||
for (; i < sz - 1; ++i) {
|
||||
if (bit_shift == 0) {
|
||||
auto sz = std::min(new_sz, dst_sz);
|
||||
for (size_t i = 0; i < sz; ++i)
|
||||
dst[i] = src[i];
|
||||
}
|
||||
else {
|
||||
auto sz = new_sz;
|
||||
if (new_sz > dst_sz)
|
||||
sz = dst_sz;
|
||||
unsigned i = 0;
|
||||
for (; i < sz - 1; ++i) {
|
||||
dst[i] = src[i];
|
||||
dst[i] >>= bit_shift;
|
||||
dst[i] |= (src[i+1] << comp_shift);
|
||||
}
|
||||
dst[i] = src[i];
|
||||
dst[i] >>= bit_shift;
|
||||
dst[i] |= (src[i+1] << comp_shift);
|
||||
if (new_sz > dst_sz)
|
||||
dst[i] |= (src[i+1] << comp_shift);
|
||||
}
|
||||
dst[i] = src[i];
|
||||
dst[i] >>= bit_shift;
|
||||
if (new_sz > dst_sz)
|
||||
dst[i] |= (src[i+1] << comp_shift);
|
||||
}
|
||||
for (auto i = new_sz; i < dst_sz; ++i)
|
||||
dst[i] = 0;
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ uint64_t mpff_manager::get_uint64(mpff const & a) const {
|
|||
int exp = -a.m_exponent - sizeof(unsigned) * 8 * (m_precision - 2);
|
||||
SASSERT(exp >= 0);
|
||||
uint64_t * s = reinterpret_cast<uint64_t*>(sig(a) + (m_precision - 2));
|
||||
return *s >> exp;
|
||||
return *s >> static_cast<unsigned>(exp);
|
||||
}
|
||||
|
||||
int64_t mpff_manager::get_int64(mpff const & a) const {
|
||||
|
|
@ -175,7 +175,7 @@ int64_t mpff_manager::get_int64(mpff const & a) const {
|
|||
return INT64_MIN;
|
||||
}
|
||||
else {
|
||||
int64_t r = *s >> exp;
|
||||
int64_t r = *s >> static_cast<unsigned>(exp);
|
||||
if (is_neg(a))
|
||||
r = -r;
|
||||
return r;
|
||||
|
|
|
|||
|
|
@ -412,7 +412,7 @@ Notes:
|
|||
bits++;
|
||||
w_max >>= 1;
|
||||
}
|
||||
unsigned pow = (1ul << (bits-1));
|
||||
unsigned pow = bits > 0 ? (1u << (bits-1)) : 0;
|
||||
unsigned a = (k + pow - 1) / pow; // a*pow >= k
|
||||
SASSERT(a*pow >= k);
|
||||
SASSERT((a-1)*pow < k);
|
||||
|
|
|
|||
|
|
@ -542,6 +542,7 @@ X(Global, isolate_roots_bug, "isolate roots bug")
|
|||
X(Global, ite_bug, "ite bug")
|
||||
X(Global, lar_solver_feas, "lar solver feas")
|
||||
X(Global, lar_solver_inf_heap, "lar solver inf heap")
|
||||
X(Global, lar_solver_restore, "lar solver restore")
|
||||
X(Global, Lazard, "Lazard")
|
||||
X(Global, lcm_bug, "lcm bug")
|
||||
X(Global, le_bug, "le bug")
|
||||
|
|
|
|||
|
|
@ -494,7 +494,7 @@ public:
|
|||
}
|
||||
|
||||
template<typename Args>
|
||||
void resize(SZ s, Args args...) {
|
||||
void resize(SZ s, Args const& args) {
|
||||
SZ sz = size();
|
||||
if (s <= sz) { shrink(s); return; }
|
||||
while (s > capacity()) {
|
||||
|
|
@ -505,7 +505,7 @@ public:
|
|||
iterator it = m_data + sz;
|
||||
iterator end = m_data + s;
|
||||
for (; it != end; ++it) {
|
||||
new (it) T(std::forward<Args>(args));
|
||||
new (it) T(args);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue