VP/CSE not doing their jobs exactly right for N_array nodes
|
|
Bugzilla Link |
615 |
Created on |
Dec 09, 2009 21:17 |
Resolution |
FIXED |
Resolved on |
Dec 19, 2009 20:55 |
Version |
svn |
OS |
Linux |
Architecture |
PC |
Attachments |
prdreverse.sac |
Extended Description
Created an attachment (id=618)
Source code to reproduce fault
I've traced an AWLF failure back to what looks to me to be
a generic problem in flattening and friends. Unfortunately, I have
not been able to simplify the problem very much, as it seems to require
that a sacprelude function be inlined during SAACYC.
Basically, the problem is this as follows. I'm using constants here, but if
I replace "50" by "id(50, true", where the id hides the constant, things work OK:
s = 50;
v1 = [s];
v2 = [50];
I have code that is relying on the identity of v1 and v2 being detected
by VP/CSE. and having one of them replaced by the other.
I suspect that if N_array nodes were flattened properly, so that
v2 looked, essentially, like v1, this problem would go away.
Alternately, a CP call within SAACYC would make v1 look like v2,
but that would have the evil effect (unless this changed at
Loch Ness) of unflattening everything else.
I think the right solution is to flatten N_array nodes everywhere.
I've marked this major, as AWLF is entirely broken until it gets fixed.
Here's how I break it:
sac2c -v1 prdreverse.sac -extrema -nowlf -doawlf -b11:saacyc:awlf:5 >crud