mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Fixes and improvements in AST const folding
This commit is contained in:
		
							parent
							
								
									db98a18edb
								
							
						
					
					
						commit
						59dd02baa2
					
				
					 2 changed files with 11 additions and 1 deletions
				
			
		|  | @ -749,6 +749,7 @@ skip_dynamic_range_lvalue_expansion:; | |||
| 	// perform const folding when activated
 | ||||
| 	if (const_fold && newNode == NULL) | ||||
| 	{ | ||||
| 		std::vector<RTLIL::State> tmp_bits; | ||||
| 		RTLIL::Const (*const_func)(const RTLIL::Const&, const RTLIL::Const&, bool, bool, int); | ||||
| 		RTLIL::Const dummy_arg; | ||||
| 
 | ||||
|  | @ -864,7 +865,16 @@ skip_dynamic_range_lvalue_expansion:; | |||
| 					newNode = children[2]->clone(); | ||||
| 			} | ||||
| 			break; | ||||
| 		case AST_CONCAT: | ||||
| 			for (auto it = children.begin(); it != children.end(); it++) { | ||||
| 				if ((*it)->type != AST_CONSTANT) | ||||
| 					goto not_const; | ||||
| 				tmp_bits.insert(tmp_bits.end(), (*it)->bits.begin(), (*it)->bits.end()); | ||||
| 			} | ||||
| 			newNode = mkconst_bits(tmp_bits, is_signed); | ||||
| 			break; | ||||
| 		default: | ||||
| 		not_const: | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue