Update PSpecPath to take the polarity and full_flag when constructed
To avoid a variables not initialized in the construct this patch modifies the PSpecPath class to take the polarity and full_flag as arguments to the constructor.
This commit is contained in:
parent
5b1e2c8c6c
commit
4c6a5bbd89
7
PSpec.cc
7
PSpec.cc
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2006 Stephen Williams <steve@icarus.com>
|
||||
* Copyright (c) 2006-2011 Stephen Williams <steve@icarus.com>
|
||||
*
|
||||
* This source code is free software; you can redistribute it
|
||||
* and/or modify it in source code form under the terms of the GNU
|
||||
|
|
@ -19,11 +19,14 @@
|
|||
|
||||
# include "PSpec.h"
|
||||
|
||||
PSpecPath::PSpecPath(unsigned src_cnt, unsigned dst_cnt)
|
||||
PSpecPath::PSpecPath(unsigned src_cnt, unsigned dst_cnt, char polarity,
|
||||
bool full_flag)
|
||||
: conditional(false), condition(0), edge(0),
|
||||
src(src_cnt), dst(dst_cnt),
|
||||
data_source_expression(0)
|
||||
{
|
||||
full_flag_ = full_flag;
|
||||
polarity_ = polarity;
|
||||
}
|
||||
|
||||
PSpecPath::~PSpecPath()
|
||||
|
|
|
|||
7
PSpec.h
7
PSpec.h
|
|
@ -56,7 +56,8 @@ class PExpr;
|
|||
class PSpecPath : public LineInfo {
|
||||
|
||||
public:
|
||||
PSpecPath(unsigned src_cnt, unsigned dst_cnt);
|
||||
PSpecPath(unsigned src_cnt, unsigned dst_cnt, char polarity,
|
||||
bool full_flag);
|
||||
~PSpecPath();
|
||||
|
||||
void elaborate(class Design*des, class NetScope*scope) const;
|
||||
|
|
@ -70,9 +71,9 @@ class PSpecPath : public LineInfo {
|
|||
// Edge specification (-1==negedge, 0 = no edge, 1==posedge)
|
||||
int edge;
|
||||
// Is this a full connection.
|
||||
bool full_flag;
|
||||
bool full_flag_;
|
||||
// What is the polarity of the connection.
|
||||
char polarity;
|
||||
char polarity_;
|
||||
// Ordered set of source nodes of a path
|
||||
std::vector<perm_string> src;
|
||||
// Ordered set of destination nodes of a path
|
||||
|
|
|
|||
|
|
@ -4196,7 +4196,7 @@ void PSpecPath::elaborate(Design*des, NetScope*scope) const
|
|||
|
||||
/* A parallel connection does not support more than a one to one
|
||||
connection (source/destination). */
|
||||
if (! full_flag && ((src.size() != 1) || (dst.size() != 1))) {
|
||||
if (! full_flag_ && ((src.size() != 1) || (dst.size() != 1))) {
|
||||
/* To be compatible with NC-Verilog we allow a parallel connection
|
||||
* with multiple sources/destinations if all the paths are only a
|
||||
* single bit wide (a scalar or a one bit vector). */
|
||||
|
|
@ -4324,7 +4324,7 @@ void PSpecPath::elaborate(Design*des, NetScope*scope) const
|
|||
|
||||
// For a parallel connection the source and destination
|
||||
// must be the same width.
|
||||
if (! full_flag) {
|
||||
if (! full_flag_) {
|
||||
unsigned long src_wid = src_sig->vector_width();
|
||||
if (src_wid != dst_wid) {
|
||||
cerr << get_fileline() << ": error: For a "
|
||||
|
|
|
|||
4
pform.cc
4
pform.cc
|
|
@ -2344,10 +2344,8 @@ extern PSpecPath* pform_make_specify_path(const struct vlltype&li,
|
|||
list<perm_string>*src, char pol,
|
||||
bool full_flag, list<perm_string>*dst)
|
||||
{
|
||||
PSpecPath*path = new PSpecPath(src->size(), dst->size());
|
||||
PSpecPath*path = new PSpecPath(src->size(), dst->size(), pol, full_flag);
|
||||
FILE_NAME(path, li.text, li.first_line);
|
||||
path->polarity = pol;
|
||||
path->full_flag = full_flag;
|
||||
|
||||
unsigned idx;
|
||||
list<perm_string>::const_iterator cur;
|
||||
|
|
|
|||
|
|
@ -945,8 +945,8 @@ void PSpecPath::dump(std::ostream&out, unsigned ind) const
|
|||
}
|
||||
|
||||
out << " ";
|
||||
if (polarity) out << polarity;
|
||||
if (full_flag) out << "*> ";
|
||||
if (polarity_) out << polarity_;
|
||||
if (full_flag_) out << "*> ";
|
||||
else out << "=> ";
|
||||
|
||||
if (data_source_expression)
|
||||
|
|
|
|||
Loading…
Reference in New Issue