diff --git a/net_nex_input.cc b/net_nex_input.cc index 3a3d3d257..e5de93f20 100644 --- a/net_nex_input.cc +++ b/net_nex_input.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: net_nex_input.cc,v 1.11 2003/10/26 04:50:46 steve Exp $" +#ident "$Id: net_nex_input.cc,v 1.12 2004/09/04 04:24:15 steve Exp $" #endif # include "config.h" @@ -182,9 +182,27 @@ NexusSet* NetEVariable::nex_input() return new NexusSet; } +NexusSet* NetAssign_::nex_input() +{ + if (bmux_ == 0) + return new NexusSet; + else + return bmux_->nex_input(); +} + NexusSet* NetAssignBase::nex_input() { NexusSet*result = rval_->nex_input(); + + /* It is possible that the lval_ can hav nex_input values. In + particular, index expressions are statement inputs as well, + so should be addressed here. */ + for (NetAssign_*cur = lval_ ; cur ; cur = cur->more) { + NexusSet*tmp = cur->nex_input(); + result->add(*tmp); + delete tmp; + } + return result; } @@ -380,6 +398,9 @@ NexusSet* NetWhile::nex_input() /* * $Log: net_nex_input.cc,v $ + * Revision 1.12 2004/09/04 04:24:15 steve + * PR1026: assignment statements can have sensitivities in the l-values. + * * Revision 1.11 2003/10/26 04:50:46 steve * Case with empty statements has no inputs. * diff --git a/netlist.h b/netlist.h index ac2616186..bff391c3d 100644 --- a/netlist.h +++ b/netlist.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: netlist.h,v 1.317 2004/08/28 16:23:05 steve Exp $" +#ident "$Id: netlist.h,v 1.318 2004/09/04 04:24:15 steve Exp $" #endif /* @@ -1432,6 +1432,12 @@ class NetAssign_ { // into a wire. void turn_sig_to_wire_on_release(); + // It is possible that l-values can have *inputs*, as well as + // being outputs. For example foo[idx] = ... is the l-value + // (NetAssign_ object) with a foo l-value and the input + // expression idx. + NexusSet* nex_input(); + // This pointer is for keeping simple lists. NetAssign_* more; @@ -3350,6 +3356,9 @@ extern ostream& operator << (ostream&, NetNet::Type); /* * $Log: netlist.h,v $ + * Revision 1.318 2004/09/04 04:24:15 steve + * PR1026: assignment statements can have sensitivities in the l-values. + * * Revision 1.317 2004/08/28 16:23:05 steve * Fix use of system tasks in AT_STAR statements. *