WLF doesn't fold; WLgenerator bounds not always N_id nodes
Bugzilla Link | 623 |
Created on | Dec 13, 2009 18:00 |
Version | svn |
OS | Linux |
Architecture | PC |
Extended Description
If you compile this: use Array: {reverse,sel,iota,sum}; int main() { XXX = iota(50); ZZZ = sum(reverse(XXX)); z = _sub_SxS_(ZZZ, 1225); return(z); } with sac2c -b11 crud.sac >crud, you get this in main(), with Build # product rev 16673:MODIFIED linux-gnu_x86_64: _flat_0 = 50; _pinl_127__flat_5 = [ _flat_0 ]; _pinl_129__flat_3 = 0; _pinl_246_max_lower = [ _pinl_129__flat_3 ]; XXX = with { (_pinl_246_max_lower <= _pinl_133__flat_6=[_pinl_134_i] (IDXS:_wlidx_908_XXX) < _pinl_127__flat_5) { /* empty */ } : _pinl_134_i ; } : genarray( _pinl_127__flat_5, _pinl_129__flat_3, IDX(_wlidx_908_XXX)); _pinl_168_maxidx0 = 49; _pinl_223_res = with { ([ 0 ] <= _pinl_221_iv=[_pinl_224__eat_3] < [ 50 ]) { _pinl_225__ea_33_res = _accu_( _pinl_221_iv); _pinl_175__flat_870__SSA3_1 = _sub_SxS_( _pinl_168_maxidx0, _pinl_224__eat_3); _ivesplit_915 = _pinl_175__flat_870__SSA3_1; _pinl_211__flat_104__SSA3_1 = _idx_sel_( _ivesplit_915, XXX); _pinl_233__flat_83 = _add_SxS_( _pinl_225__ea_33_res, _pinl_211__flat_104__SSA3_1); } : _pinl_233__flat_83 ; } : fold( ScalarArith::+, _pinl_129__flat_3); I am guessing ( but have not looked) that WLF is getting confused by: (a) a mix of N_array nodes and N_id nodes in WL generator bounds, and/or: (b) Flattened vs. non-flattened N_array node contents.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information