Skip to content

Commit e8b7111

Browse files
committed
bv_varidt now has next member
This adds a 'next' member to bv_varidt.
1 parent 6977408 commit e8b7111

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

src/ebmc/bdd_engine.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ void bdd_enginet::allocate_vars(const var_mapt &var_map)
286286
bit_nr<it.second.bits.size();
287287
bit_nr++)
288288
{
289-
bv_varidt bv_varid(it.first, bit_nr);
289+
bv_varidt bv_varid{it.first, bit_nr, false};
290290
vars[bv_varid].is_input=
291291
it.second.is_input() || it.second.is_nondet();
292292
}

src/trans-netlist/bv_varid.h

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,28 @@ class bv_varidt
1818
public:
1919
irep_idt id;
2020
std::size_t bit_nr;
21+
bool next;
2122

2223
friend bool operator==(const bv_varidt &i1, const bv_varidt &i2)
2324
{
24-
return i1.id==i2.id && i1.bit_nr==i2.bit_nr;
25+
return i1.id == i2.id && i1.bit_nr == i2.bit_nr && i1.next == i2.next;
2526
}
2627

2728
friend bool operator<(const bv_varidt &i1, const bv_varidt &i2)
2829
{
2930
if(i1.id==i2.id)
30-
return i1.bit_nr<i2.bit_nr;
31-
32-
return i1.id<i2.id;
31+
{
32+
if(i1.bit_nr == i2.bit_nr)
33+
return i1.next < i2.next;
34+
else
35+
return i1.bit_nr < i2.bit_nr;
36+
}
37+
else
38+
return i1.id < i2.id;
3339
}
3440

35-
inline bv_varidt(const irep_idt &_id, std::size_t _bit_nr)
36-
: id(_id), bit_nr(_bit_nr)
41+
inline bv_varidt(const irep_idt &_id, std::size_t _bit_nr, bool _next)
42+
: id(_id), bit_nr(_bit_nr), next(_next)
3743
{ }
3844

3945
std::string as_string() const;
@@ -47,7 +53,9 @@ static inline std::ostream & operator<< (std::ostream &out, const bv_varidt &v)
4753
struct bv_varidt_hash
4854
{
4955
size_t operator()(const bv_varidt &bv_varid) const
50-
{ return hash_string(bv_varid.id)^bv_varid.bit_nr; }
56+
{
57+
return hash_string(bv_varid.id) ^ bv_varid.bit_nr ^ bv_varid.next;
58+
}
5159
};
5260

5361
#endif

src/trans-netlist/trans_to_netlist.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ void convert_trans_to_netlistt::operator()(
335335

336336
for(std::size_t bit_nr = 0; bit_nr < var.bits.size(); bit_nr++)
337337
{
338-
bv_varidt bv_varid{v_it->first, bit_nr};
338+
bv_varidt bv_varid{v_it->first, bit_nr, false};
339339
var_mapt::vart::bitt &bit=var.bits[bv_varid.bit_nr];
340340
lhs_entryt &entry=lhs_map[bv_varid];
341341
entry.bit=&bit;
@@ -392,7 +392,7 @@ void convert_trans_to_netlistt::operator()(
392392

393393
if(it==dest.var_map.reverse_map.end())
394394
{
395-
bv_varidt varid{"nondet", dest.var_map.nondets.size()};
395+
bv_varidt varid{"nondet", dest.var_map.nondets.size(), false};
396396
var_mapt::vart &var=dest.var_map.map[varid.id];
397397
var.add_bit().current=literalt(n, false);
398398
var.vartype=var_mapt::vart::vartypet::NONDET;
@@ -603,7 +603,7 @@ void convert_trans_to_netlistt::convert_lhs_rec(
603603

604604
for(std::size_t bit_nr = from; bit_nr <= to; bit_nr++)
605605
{
606-
bv_varidt bv_varid{identifier, bit_nr};
606+
bv_varidt bv_varid{identifier, bit_nr, false};
607607
lhs_mapt::iterator it=lhs_map.find(bv_varid);
608608

609609
if(it==lhs_map.end())
@@ -768,7 +768,7 @@ void convert_trans_to_netlistt::add_equality_rec(
768768

769769
for(std::size_t bit_nr = lhs_from; bit_nr != (lhs_to + 1); bit_nr++)
770770
{
771-
bv_varidt bv_varid{identifier, bit_nr};
771+
bv_varidt bv_varid{identifier, bit_nr, false};
772772
lhs_mapt::iterator it=
773773
lhs_map.find(bv_varid);
774774

src/trans-netlist/var_map.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void var_mapt::add(
5959

6060
if(var.is_latch() || var.is_input())
6161
{
62-
reverse_map.emplace(v_current, bv_varidt{id, bit_nr});
62+
reverse_map.emplace(v_current, bv_varidt{id, bit_nr, false});
6363
}
6464
}
6565

0 commit comments

Comments
 (0)