3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00

annotate enode hash as signed character to address issue #210

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2015-09-29 14:14:29 -07:00
parent 074ff58739
commit 77c423b9aa
4 changed files with 10 additions and 10 deletions

View file

@ -216,7 +216,7 @@ namespace smt {
// m_lbl_hash should be different from -1, if and only if,
// there is a pattern that contains the enode. So,
// I use a trail to restore the value of m_lbl_hash to -1.
ctx.push_trail(value_trail<context, char>(m_lbl_hash));
ctx.push_trail(value_trail<context, signed char>(m_lbl_hash));
unsigned h = hash_u(get_owner_id());
m_lbl_hash = h & (APPROX_SET_CAPACITY - 1);
// propagate modification to the root m_lbls set.

View file

@ -52,11 +52,11 @@ namespace smt {
#else
class app2enode_t : public u_map<enode *> {
public:
void setx(unsigned x, enode *val, enode *def){
if(val == 0)
erase(x);
else
insert(x,val);
void setx(unsigned x, enode *val, enode *def){
if (val == 0)
erase(x);
else
insert(x,val);
}
};
#endif
@ -105,7 +105,7 @@ namespace smt {
enode_vector m_parents; //!< Parent enodes of the equivalence class.
theory_var_list m_th_var_list; //!< List of theories that 'care' about this enode.
trans_justification m_trans; //!< A justification for the enode being equal to its root.
char m_lbl_hash; //!< It is different from -1, if enode is used in a pattern
signed char m_lbl_hash; //!< It is different from -1, if enode is used in a pattern
approx_set m_lbls;
approx_set m_plbls;
enode * m_args[0]; //!< Cached args