UFIV traversal breaking CUDA partial folds
|
|
Bugzilla Link |
1011 |
Created on |
Aug 01, 2012 17:09 |
Resolution |
FIXED |
Resolved on |
Aug 02, 2012 16:24 |
Version |
svn |
OS |
All |
Architecture |
PC |
Extended Description
Compiling SaC code with fold with-loop for the CUDA backend with the CUDA partial folding optimization fails as of rev 18118. I got this error in previous revisions, but I was working on the cudahybrid backend so I though the issue was specific to that. It does not seem to be the case however:
------------------------------------------------
$ sac2c relax_fix.sac -target MBpro_cuda -dopfd
...
** 16: Introducing memory management instructions ...
**** Unshare index vectors in WL-folds ...
**** Propagating constants ...
**** CUDA Flatten generators ...
**** AUD/SCL distinction ...
**** Making copy operations explicit ...
**** Introducing explicit allocation statements ...
memory/alloc.c:1010 Assertion "( NODE_TYPE( prf) == N_prf && PRF_PRF( prf) == F_cond_wl_assign)" failed!
Result of partial fold is not defined by F_cond_wl_assign
------------------------------------------------
I briefly looked into this and the result of the partial fold is now a F_unshare prf which was introduced
by the UFIV traversal. I don't know if the assertion is now outdated or if this condition is really necessary. I'm assigning this to Jara, as he committed UFIV according to the svn logs.