mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Merge pull request #1569 from YosysHQ/eddie/fix_1531
verilog: preserve size of $genval$-s in for loops
This commit is contained in:
		
						commit
						d406f2ffd7
					
				
					 2 changed files with 50 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1198,6 +1198,14 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
 | 
			
		|||
		varbuf = new AstNode(AST_LOCALPARAM, varbuf);
 | 
			
		||||
		varbuf->str = init_ast->children[0]->str;
 | 
			
		||||
 | 
			
		||||
		auto resolved = current_scope.at(init_ast->children[0]->str);
 | 
			
		||||
		if (resolved->range_valid) {
 | 
			
		||||
			varbuf->range_left = resolved->range_left;
 | 
			
		||||
			varbuf->range_right = resolved->range_right;
 | 
			
		||||
			varbuf->range_swapped = resolved->range_swapped;
 | 
			
		||||
			varbuf->range_valid = resolved->range_valid;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		AstNode *backup_scope_varbuf = current_scope[varbuf->str];
 | 
			
		||||
		current_scope[varbuf->str] = varbuf;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2998,6 +3006,14 @@ void AstNode::expand_genblock(std::string index_var, std::string prefix, std::ma
 | 
			
		|||
			current_ast_mod->children.push_back(p);
 | 
			
		||||
			str = p->str;
 | 
			
		||||
			id2ast = p;
 | 
			
		||||
 | 
			
		||||
			auto resolved = current_scope.at(index_var);
 | 
			
		||||
			if (resolved->range_valid) {
 | 
			
		||||
				p->range_left = resolved->range_left;
 | 
			
		||||
				p->range_right = resolved->range_right;
 | 
			
		||||
				p->range_swapped = resolved->range_swapped;
 | 
			
		||||
				p->range_valid = resolved->range_valid;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue