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 16
    • Merge requests 16
  • Deployments
    • Deployments
    • Releases
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • sac-group
  • sac2csac2c
  • Issues
  • #1264
Closed
Open
Created Mar 30, 2012 by Jaroslav Sýkora@jsaGuest

crash in WLF, triggered by specialized+inline function that fails to inline

Bugzilla Link 943
Created on Mar 30, 2012 16:51
Version svn
OS Linux
Architecture PC
Attachments inline-wlf.tar.gz

Extended Description

Created an attachment (id=873)
demo for the bug
Compiler crashes in WLF; disabling WLF (-nowlf) makes it run...
Possibly there is more than one problem here. The shape of x=iota(4) is not inferred to be int[4], it stays simply int[.] (why?). Therefore, cwc:dfc pass cannot inline function 'suma', because it cannot statically match int[.] (from iota) and int[4] (from suma() specialization). Afterwards it crashes in wlf. Interestingly, it works when 'inline' on suma is removed. Perhaps there is a confusion somewhere that a function marked 'inline' is not actually inlined?
Amusingly, when you modify the source code below in *any* *one* of the following ways it works!
* removing inline on function 'suma'
* removing the shape specialization on 'suma', i.e. replacing 'int[SZ]' by 'int[.]'. This enables cwc:dfc to inline the function completely.
* replacing the iota() call with (currently commented out) direct assignment x=[0,1,2,3]; This also enables to inline suma().
/**********************************************************************
 *
 * SAC bug report: spec-inlined.sacbugreport
 *
 **********************************************************************
 *
 * Automatically generated on Fri Mar 30 16:20:45 BST 2012
 *
 * using sac2c v1.00-beta (Haggis And Apple) rev 17776:MODIFIED for linux-gnu_i686
 * built Fri Mar 30 16:09:20 BST 2012.
 * by user js308 on host lxjs308 for linux-gnu.
 *
 * The compiler was called by
 *  sac2c -o spec-inlined spec-inlined.sac
 *
 * The compiler crashed in
 *  phase: opt (Running SAC optimizations)
 *  sub phase: cyc (Optimization cycle)
 *  cycle phase: wlf (Applying with-loop folding)
 *  cycle instance: 1
 *
 * What follows is the contents of spec-inlined.sac.
 *
 **********************************************************************/
use Array: all;
use StdIO: all;
#define SZ    4
inline 
int suma(int[SZ] x)
{
  y = with {
    (0*shape(x) <= iv < shape(x)) : x[iv];
  } : fold(+, 0);
  return y;
}
int main()
{
  x = iota(SZ);
//   x = [0, 1, 2, 3];
//   print(x);
  y = suma(x);
  print(y);
  return 0;
}
/**********************************************************************
 *
 * End of bug report
 *
 **********************************************************************/
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking