Michael Tautschnig <m...@debian.org> reports:

The problem, at least for most of the build failures, is a very simple one: An
endianness issue, which actually lies in the original MiniSat code. The
declaration of d_assigns in line 251 of src/sat/minisat_solver.h declares the
assignments as a vector of chars; assignments happen using the toInt function
from src/sat/minisat_global.h, which returns *an int*. Now a lifted Boolean just
requires 2 bits and using a vector of chars may be (depending on memory
alignment) less memory consuming, but an implicit cast from this int to char is
bound to fail on big-endian systems.

The simplest way to fix this is declaring d_assigns as a vector of ints with a
corresponding fix of declarations in minisat_varorder.h; this change, however,
could possibly be intrusive memory-wise and you will want to re-run CVC 3 on
some SMT Comp instances and compare the performance.

If you have to stick with a vector of chars, then a proper wrapper of toInt
(e.g., toChar) should be added the behavior of which depends on the
architecture.



-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to