Optimization phase pessimizes
|
|
Bugzilla Link |
482 |
Created on |
Apr 17, 2009 17:51 |
Version |
1.00beta |
OS |
Linux |
Architecture |
PC |
Extended Description
prd.sac is a simple benchmark that essentially does +/⍳n.
If I compile sac/apex/prd.sac with -dowlf, I get this fold-WL
as the inner loop in main():
_pinl_773__z = with {
([ 0 ] <= _pinl_769__iv=[_pinl_774___eat_64] < [ 10000000 ])
{
_pinl_775___ea_466_z = _accu_( _pinl_769__iv);
_al_1542 = _sub_SxS_( _pinl_775___ea_466_z, _pinl_774___eat_64);
_al_1543 = _add_SxS_( 9999999, _al_1542);
} : _al_1543 ;
} :
fold( _MAIN::plusIII, _isaa_1569__rso_56_TheWorld);
But, if I compile it with -nowlf -doswlf, I get this:
_pinl_773__z = with {
([ 0 ] <= _pinl_769__iv=[_pinl_774___eat_64] < [ 10000000 ])
{
_pinl_775___ea_466_z = _accu_( _pinl_769__iv);
_pinl_784_____flat_69 = _add_SxS_( _pinl_775___ea_466_z, _pinl_774___eat_64);
} : _pinl_784_____flat_69 ;
} :
fold( _MAIN::plusIII, _isaa_1556__rso_56_TheWorld);
Note that the first example has an _sub_SxS_ in it?
I have not had time to look into where it's being introduced,
except that it's in b11:cyc.