TC can't simplify AKV _idxs2offset()
|
|
Bugzilla Link |
868 |
Created on |
Sep 02, 2011 18:31 |
Version |
svn |
OS |
Linux |
Architecture |
PC |
Extended Description
This isn't really a bug, inasmuch as it's
desired new functionality for TC.
However, the CF unit test here:
cd ~/sac/testsuite/optimizations/constantfolding
UnitTestRunGrep1 SCCFprf_sel4ivecyc.sac
UnitTestRunGrep1 testing: SCCFprf_sel4ivecyc.sac
Greptest: SCCFprf_sel4ivecyc.sac -noewlcf -docf -doawlf failed with 3 hits on phrase "NESTEDSTRUCTCON". Wanted 0 hits
CF is unable to simplify the idx_sel() below, because
_ivesplit_472 is not AKV, although it should be:
_isaa_466_vec = 1;
_ivesplit_473 = [ 3, 2 ];
_iveras_475 = 0;
_ivesplit_472 = _idxs2offset_( _ivesplit_473, _iveras_475, _isaa_466_vec);
_icc_28 = _idx_sel_( _ivesplit_472, NESTEDSTRUCTCON);
sac2c -V
sac2c v1.00-beta (Haggis And Apple)
developer rev 17585:MODIFIED linux-gnu_x86_64
(Thu Sep 1 22:23:35 EDT 2011 by sac)
I looked at ct_prf.c, and it does contain code, likely
produced by yrs trly, for _idxs2offset. However, nowhere in
ct_prf.c is there anything I can find that actually evaluates
primitive expressions like "2+3", to produce an AKV result.
Ah, I am beginning to see a light, perhaps: It looks as if
there may be calls from TC to entries such as those
in constants_struc_ops.c, probably driven by the (also
undocumented) co_fun table entries in prf_info.mac.
Perhaps Mr. TC can either confirm this conjecture,
or provide the correct answer?