AWLF unit test relaxAKD.sac fails - can't analyze _le_VxS( constant, val w/maxval)
|
|
Bugzilla Link |
1039 |
Created on |
Dec 14, 2012 20:48 |
Version |
svn |
OS |
Linux |
Architecture |
PC |
Attachments |
relaxAKDnotake.sac |
Extended Description
Created an attachment (id=941)
source code to reproduce fault
An AKD version of Bodo's function relax() from his "Condensing..." paper
does not AWLF. The attached much-simplified version
(basically, drop(i, drop( j, X)) does not fold either.
The immediate problem is that the predicate, WLINTERSECTION1PART, can not
be computed from this relational:
p = _le_VxS_( constant, valueWithMaxval);
Cf can handle values with extrema, and it can handle constants,
but not both at once. I started to extend CF to make it do this,
but it occurred to me that PRFUNR would likely do the trick.
And, indeed, it does, so I am going to extend PRFUNR to unroll
VxS, SxV and VxV relationals. If that proves catastrophic for
some reason, I'll do the dirty work in CF.
sac2c -V
sac2c v1.00-beta (Haggis And Apple)
developer rev 18040 linux-gnu_x86_64
(Fri Dec 14 15:32:12 EST 2012 by sac)
sac2c -v1 relaxAKDnotake.sac -doawlf -nowlf -bopt >crud