|
|
Bugzilla Link |
778 |
Created on |
Nov 19, 2010 19:57 |
Version |
svn |
OS |
Linux |
Architecture |
PC |
Extended Description
If the above unit test is compiled with:
-maxwlur 1 -docf -extrema -nowlf -doawlf -ecc
the modarray() call in tghe code is left there. Although CF properly
eliminates the modarray() from the result-using part of the code,
we are left with guards that refer to the modarray result, in order
to get its shape:
_flat_1 = true;
_flat_0 = 1;
one = _MAIN::id( _flat_0, _flat_1) ;
_isaa_49_one = _dim_A_( one);
_isaa_50_one = _shape_A_( one);
_isaa_51_one = _saabind_( _isaa_49_one, _isaa_50_one, one);
_idc_38, _icc_27_pred = _type_constraint_( int, _isaa_51_one);
_icc_28 = _add_SxS_( _idc_38, _flat_0);
_flat_2 = _afterguard_( _icc_28, _icc_27_pred);
cltwo = _MAIN::id( _flat_2, _flat_1) ;
_isaa_52_cltwo = _dim_A_( cltwo);
_isaa_53_cltwo = _shape_A_( cltwo);
_isaa_54_cltwo = _saabind_( _isaa_52_cltwo, _isaa_53_cltwo, cltwo);
_flat_5 = 5;
five = _MAIN::id( _flat_5, _flat_1) ;
_isaa_55_five = _dim_A_( five);
_isaa_56_five = _shape_A_( five);
_isaa_57_five = _saabind_( _isaa_55_five, _isaa_56_five, five);
_idc_39, _icc_29_pred = _type_constraint_( int, _isaa_57_five);
_flat_7 = [:int];
_idc_40, _icc_30_pred = _shape_matches_dim_VxA_( _flat_7, _isaa_54_cltwo);
_idc_42, _icc_32_pred = _val_lt_shape_VxA_( _flat_7, _isaa_54_cltwo);
_icc_33 = _modarray_AxVxS_( _isaa_54_cltwo, _flat_7, _idc_39);
x3 = _afterguard_( _icc_33, _icc_32_pred, _icc_30_pred, _icc_29_pred);
_idc_44, _icc_34_pred = _shape_matches_dim_VxA_( _flat_7, x3);
_idc_45, _icc_36_pred = _val_lt_shape_VxA_( _idc_44, x3);
z = _afterguard_( _idc_39, _icc_36_pred, _icc_34_pred);
_esd_48 = -5;
z__SSA0_1 = _add_SxS_( z, _esd_48);
return( z__SSA0_1);
I think the best approach here is to replace guards that refer to
dim or shape by new guards that use _shape_A_ or _dim_A_.
Other CF code would then replace those by the SAA shape/dim
of the array.