|
|
Bugzilla Link |
670 |
Created on |
Jan 13, 2010 17:52 |
Resolution |
FIXED |
Resolved on |
Jan 14, 2010 12:30 |
Version |
svn |
OS |
Linux |
Architecture |
PC |
Extended Description
** 13: Transforming with-loop representation ...
**** Ensuring structual constants for with-loop partition bounds ...
**** Transforming with-loop representation ...
WARNING: line 18 file: test.sac
WARNING: Naive compilation of multi-generator with-loop activated
WARNING: line 23 file: test.sac
WARNING: Naive compilation of multi-generator with-loop activated
**** MUTC Splitting withloops by dimensions ...
WARNING: line 18 file: test.sac
WARNING: Cannot transform with-loop with naive ordering
WARNING: line 23 file: test.sac
WARNING: Cannot transform with-loop with naive ordering
BugReport:
/**********************************************************************
*
* SAC bug report: test.sacbugreport
*
**********************************************************************
*
* Automatically generated on Wed Jan 13 17:48:00 GMT 2010
*
* using sac2c v1.00-beta (Haggis And Apple) rev 16726:MODIFIED for linux-gnu_i686
* built Wed Jan 13 16:39:11 GMT 2010.
* by user dsr on host obelix for linux-gnu.
*
* The compiler was called by
* sac2c -target sl_ppp -v3 test.sac
*
* The compiler crashed in
* phase: wlt (Transforming with-loop representation)
* sub phase: wlsd (MUTC Splitting withloops by dimensions)
*
* What follows is the contents of test.sac.
*
**********************************************************************/
use StdIO: all;
use Array: all;
use Hiding :all;
use Benchmarking: all;
double, Interval
dasum(
Interval inter,
int n,
double[.] x,
int incx) {
sum = 0d;
if (n > 0 && incx > 0) {
if (incx == 1) {
sum = with {
([0] <= [iv] <= [n - 1]): abs(x[iv]);
}: fold(+, 0d);
}
else {
sum = with {
([0] <= [iv] <= [(n-1)*incx] step [incx]): abs(x[iv]);
}: fold(+, 0d);
}
}
return (sum, inter);
}
#pragma noinline
int main() {
interval0 = getInterval("work", 0);
interval1 = getInterval("work", 1);
interval2 = getInterval("work", 2);
n = (:int) FibreScanIntArray();
x = (:double[.]) FibreScanDoubleArray();
incx = (:int) FibreScanIntArray();
n0 = hideValue(n); n1 = hideValue(n); n2 = hideValue(n);
x0 = hideValue(x); x1 = hideValue(x); x2 = hideValue(x);
incx0 = hideValue(incx); incx1 = hideValue(incx); incx2 = hideValue(incx);
start(interval0); res0, interval0 = dasum(interval0, n0, x0, incx0); end(interval0);
start(interval1); res1, interval1 = dasum(interval1, n1, x1, incx1); end(interval1);
start(interval2); res2, interval2 = dasum(interval2, n2, x2, incx2); end(interval2);
FibrePrint(hideValue(res0)); FibrePrint(hideValue(res1)); FibrePrint(hideValue(res2));
printResult( interval0, interval1, interval2);
return (0);
}
/**********************************************************************
*
* End of bug report
*
**********************************************************************/