diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-01-15 12:41:52 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-01-15 12:41:52 +0100 |
commit | 8e8e791fb5dba3eb0a236cbed8c13bd5ac5ce96c (patch) | |
tree | dfa1e5499224f3f0de07591bfe2fbb259afa5bbc /frontends/ast | |
parent | 153d3dd4e0b6e8725e2afbc973cbc1e836cb0703 (diff) | |
download | yosys-8e8e791fb5dba3eb0a236cbed8c13bd5ac5ce96c.tar.gz yosys-8e8e791fb5dba3eb0a236cbed8c13bd5ac5ce96c.tar.bz2 yosys-8e8e791fb5dba3eb0a236cbed8c13bd5ac5ce96c.zip |
Consolidate "Blocking assignment to memory.." msgs for the same line
Diffstat (limited to 'frontends/ast')
-rw-r--r-- | frontends/ast/simplify.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 2ce2d57dc..5ab778e66 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -51,6 +51,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, { AstNode *newNode = NULL; bool did_something = false; + static pair<string, int> last_blocking_assignment_warn; #if 0 log("-------------\n"); @@ -62,6 +63,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, if (stage == 0) { log_assert(type == AST_MODULE); + last_blocking_assignment_warn = pair<string, int>(); while (simplify(const_fold, at_zero, in_lvalue, 1, width_hint, sign_hint, in_param)) { } @@ -1259,9 +1261,13 @@ skip_dynamic_range_lvalue_expansion:; sstr << "$memwr$" << children[0]->str << "$" << filename << ":" << linenum << "$" << (autoidx++); std::string id_addr = sstr.str() + "_ADDR", id_data = sstr.str() + "_DATA", id_en = sstr.str() + "_EN"; - if (type == AST_ASSIGN_EQ) - log_warning("Blocking assignment to memory in line %s:%d is handled like a non-blocking assignment.\n", - filename.c_str(), linenum); + if (type == AST_ASSIGN_EQ) { + pair<string, int> this_blocking_assignment_warn(filename, linenum); + if (this_blocking_assignment_warn != last_blocking_assignment_warn) + log_warning("Blocking assignment to memory in line %s:%d is handled like a non-blocking assignment.\n", + filename.c_str(), linenum); + last_blocking_assignment_warn = this_blocking_assignment_warn; + } int mem_width, mem_size, addr_bits; children[0]->id2ast->meminfo(mem_width, mem_size, addr_bits); |