diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-09-16 11:25:16 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2019-09-16 11:25:37 +0200 |
commit | 25b08b1afd87f6c2e6a6c1318bc790b4a929b7f5 (patch) | |
tree | ae6a65e6a4d4db373f2cbfc02a0b3f1e8488cf16 /frontends | |
parent | 2b93b8fc74d98d1d2b1ec9a8cfb5665db1666726 (diff) | |
download | yosys-25b08b1afd87f6c2e6a6c1318bc790b4a929b7f5.tar.gz yosys-25b08b1afd87f6c2e6a6c1318bc790b4a929b7f5.tar.bz2 yosys-25b08b1afd87f6c2e6a6c1318bc790b4a929b7f5.zip |
Fix handling of range selects on loop variables, fixes #1372
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'frontends')
-rw-r--r-- | frontends/ast/simplify.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 52fcf3ee7..b1ee22f42 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -2895,8 +2895,15 @@ AstNode *AstNode::readmem(bool is_readmemh, std::string mem_filename, AstNode *m void AstNode::expand_genblock(std::string index_var, std::string prefix, std::map<std::string, std::string> &name_map) { if (!index_var.empty() && type == AST_IDENTIFIER && str == index_var) { - current_scope[index_var]->children[0]->cloneInto(this); - return; + if (children.empty()) { + current_scope[index_var]->children[0]->cloneInto(this); + } else { + AstNode *p = new AstNode(AST_LOCALPARAM, current_scope[index_var]->children[0]->clone()); + p->str = stringf("$genval$%d", autoidx++); + current_ast_mod->children.push_back(p); + str = p->str; + id2ast = p; + } } if ((type == AST_IDENTIFIER || type == AST_FCALL || type == AST_TCALL) && name_map.count(str) > 0) |