Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • sac2c sac2c
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 394
    • Issues 394
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 24
    • Merge requests 24
  • Deployments
    • Deployments
    • Releases
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • sac-group
  • sac2csac2c
  • Issues
  • #1260
Closed
Open
Created Dec 13, 2009 by Robert Bernecky@rbeDeveloper

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
Assignee
Assign to
Time tracking