@@ -141,9 +141,15 @@ class convert_trans_to_netlistt:public messaget
141141
142142 literalt convert_rhs (const rhst &);
143143
144- void finalize_lhs (lhs_mapt::iterator);
145-
146- void convert_lhs_rec (const exprt &expr, std::size_t from, std::size_t to);
144+ // The bv_varidts of the definitions that are yet to be processed.
145+ using lhs_stackt = std::stack<bv_varidt>;
146+ void add_to_stack (
147+ const exprt &expr,
148+ std::size_t from,
149+ std::size_t to,
150+ lhs_stackt &);
151+ void lhs_loop (lhs_stackt &);
152+ void finalize_definition (lhs_mapt::iterator);
147153
148154 void convert_constraints ();
149155
@@ -547,7 +553,7 @@ void convert_trans_to_netlistt::finalize_lhs(lhs_mapt::iterator lhs_it)
547553
548554/* ******************************************************************\
549555
550- Function: convert_trans_to_netlistt::convert_lhs_rec
556+ Function: convert_trans_to_netlistt::lhs_loop
551557
552558 Inputs:
553559
@@ -557,10 +563,27 @@ Function: convert_trans_to_netlistt::convert_lhs_rec
557563
558564\*******************************************************************/
559565
560- void convert_trans_to_netlistt::convert_lhs_rec (
566+ void convert_trans_to_netlistt::lhs_loop (lhs_stackt &lhs_stack)
567+ {
568+ }
569+
570+ /* ******************************************************************\
571+
572+ Function: convert_trans_to_netlistt::add_to_stack
573+
574+ Inputs:
575+
576+ Outputs:
577+
578+ Purpose:
579+
580+ \*******************************************************************/
581+
582+ void convert_trans_to_netlistt::add_to_stack (
561583 const exprt &expr,
562584 std::size_t from,
563- std::size_t to)
585+ std::size_t to,
586+ lhs_stackt &lhs_stack)
564587{
565588 PRECONDITION (from <= to);
566589
@@ -574,6 +597,8 @@ void convert_trans_to_netlistt::convert_lhs_rec(
574597 bv_varid.bit_nr <=to;
575598 bv_varid.bit_nr ++)
576599 {
600+ lhs_stack.push (bv_varid);
601+ #if 0
577602 lhs_mapt::iterator it=lhs_map.find(bv_varid);
578603
579604 if(it==lhs_map.end())
@@ -582,8 +607,9 @@ void convert_trans_to_netlistt::convert_lhs_rec(
582607
583608 // we only need to do wires
584609 if(!it->second.var->is_wire()) return;
585-
610+
586611 finalize_lhs(it);
612+ #endif
587613 }
588614
589615 return ;
@@ -595,7 +621,7 @@ void convert_trans_to_netlistt::convert_lhs_rec(
595621 to_extractbit_expr (expr).index (), i)) // constant?
596622 {
597623 from = i.to_ulong ();
598- convert_lhs_rec (to_extractbit_expr (expr).src (), from, from);
624+ add_to_stack (to_extractbit_expr (expr).src (), from, from, lhs_stack );
599625 return ;
600626 }
601627 }
@@ -614,7 +640,7 @@ void convert_trans_to_netlistt::convert_lhs_rec(
614640 from = new_from.to_ulong ();
615641 to = new_to.to_ulong ();
616642
617- convert_lhs_rec (to_extractbits_expr (expr).src (), from, to);
643+ add_to_stack (to_extractbits_expr (expr).src (), from, to, lhs_stack );
618644 return ;
619645 }
620646 }
@@ -634,7 +660,7 @@ void convert_trans_to_netlistt::convert_lhs_rec(
634660 if (width==0 )
635661 continue ;
636662
637- convert_lhs_rec (*it, 0 , width - 1 );
663+ add_to_stack (*it, 0 , width - 1 , lhs_stack );
638664 }
639665}
640666
@@ -658,7 +684,7 @@ literalt convert_trans_to_netlistt::convert_rhs(const rhst &rhs)
658684 if (!rhs_entry.converted )
659685 {
660686 // get all lhs symbols this depends on
661- convert_lhs_rec (rhs_entry.expr , 0 , rhs_entry.width - 1 );
687+ add_to_stack (rhs_entry.expr , 0 , rhs_entry.width - 1 , lhs_stack );
662688
663689 rhs_entry.converted =true ;
664690
0 commit comments