|
|
Bugzilla Link |
460 |
Created on |
Nov 14, 2008 16:20 |
Resolution |
FIXED |
Resolved on |
Dec 14, 2009 12:53 |
Version |
1.00beta |
OS |
All |
Architecture |
PC |
Attachments |
wrong.sac |
Extended Description
Created an attachment (id=497)
source code to reproduce error
While trying some more examples for the with3, I came across the following wrong behaviour of wltransform. Starting with the attached program, we after phase 11 get a with-loop of the form
res__SSA0_1 = with ( iv__SSA0_1 )
([ 0, 0 ] <= iv__SSA0_1=[_eat_23, _eat_22] < [ 40, 10 ] step [ 1, 4 ] width [ 1, 1 ])
{
_ea_32_res__SSA0_1 = _accu_( iv__SSA0_1);
_pinl_44__flat_69 = _add_SxS_( _ea_32_res__SSA0_1, 1);
} : _pinl_44__flat_69 ; ,
([ 0, 1 ] <= iv__SSA0_1=[_eat_23, _eat_22] < [ 40, 10 ] step [ 1, 4 ] width [ 1, 3 ])
{
_ea_32_res__SSA0_1__SSA1_1 = _accu_( iv__SSA0_1);
_pinl_44__flat_69__SSA1_1 = _add_SxS_( _ea_32_res__SSA0_1__SSA1_1, 1000);
} : _pinl_44__flat_69__SSA1_1 ;
fold( ScalarArith::+, _isaa_402__rso_14_TheWorld);
the second partition represents the default partition (i.e. 1000 is the default value). After phase 12 this has been turned into
res__SSA0_1 = with2 (iv__SSA0_1=[_eat_23, _eat_22])
/********** operators: **********/
op_0 =
{
_ea_32_res__SSA0_1 = _accu_( iv__SSA0_1);
_pinl_44__flat_69 = _add_SxS_( _ea_32_res__SSA0_1, 1);
} : _pinl_44__flat_69 ; ,
op_1 =
{
_ea_32_res__SSA0_1__SSA1_1 = _accu_( iv__SSA0_1);
_pinl_44__flat_69__SSA1_1 = _add_SxS_( _ea_32_res__SSA0_1__SSA1_1, 1000);
} : _pinl_44__flat_69__SSA1_1 ;
/********** segment 0: **********
* index domain: [ 0 0 ] -> [ 40 10 ]
* sv: [ 1 4 ]
* homsv: [ 1 ? ]
*/
(0 -> 40), step0[0] 1
(0 --> 1):
(1 -> 9), step0[1] 4
(0 --> 3): /* noop */
(3 --> 4): op_0
(9 -> 10), step0[1] 1: /* noop */
/********** conexpr: **********/
fold( ScalarArith::+, _isaa_402__rso_14_TheWorld);
Note that op_1 is not referenced anymore. Is this known behaviour/a known bug?