3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-07-29 07:27:58 +00:00

Fixes and improvements in AST const folding

This commit is contained in:
Clifford Wolf 2013-06-10 13:56:03 +02:00
parent db98a18edb
commit 59dd02baa2
2 changed files with 11 additions and 1 deletions

View file

@ -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;
}
}