this reduces significantly the number of assumes generated without aftecting too much
the information that is preserved. this improves the compile-time cost
of enable-knowledge-retention significantly.
cost of enable-knowledge-retention before the patch
Metric: inst_count Program baseline patched diff test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test 118759192395 155068323810 30.6% test-suite :: CTMark/Bullet/bullet.test 132173382943 172092586752 30.2% test-suite :: CTMark/7zip/7zip-benchmark.test 193010622254 201710179449 4.5% test-suite :: CTMark/kimwitu++/kc.test 61391711480 64129872325 4.5% test-suite :: CTMark/ClamAV/clamscan.test 80896366241 79491189655 -1.7% test-suite :: CTMark/sqlite3/sqlite3.test 77983944971 77321823801 -0.8% test-suite :: CTMark/consumer-typeset/consumer-typeset.test 56565054641 56127618358 -0.8% test-suite :: CTMark/mafft/pairlocalalign.test 54476149303 54268277583 -0.4% test-suite :: CTMark/SPASS/SPASS.test 65588484451 65405266465 -0.3% Geomean difference 6.6% Metric: compile_time Program baseline patched diff test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test 38.60 49.38 27.9% test-suite :: CTMark/Bullet/bullet.test 43.90 54.25 23.6% test-suite :: CTMark/kimwitu++/kc.test 22.88 24.20 5.8% test-suite :: CTMark/7zip/7zip-benchmark.test 66.93 70.27 5.0% test-suite :: CTMark/sqlite3/sqlite3.test 24.70 24.47 -0.9% test-suite :: CTMark/ClamAV/clamscan.test 24.12 23.91 -0.9% test-suite :: CTMark/mafft/pairlocalalign.test 15.91 15.84 -0.5% test-suite :: CTMark/consumer-typeset/consumer-typeset.test 17.09 17.10 0.1% test-suite :: CTMark/SPASS/SPASS.test 21.81 21.82 0.1% Geomean difference 6.2%
cost after this patch
Metric: inst_count Program baseline patched diff test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test 118763840162 138467480074 16.6% test-suite :: CTMark/Bullet/bullet.test 132174006965 136291227509 3.1% test-suite :: CTMark/kimwitu++/kc.test 61393799157 62997635803 2.6% test-suite :: CTMark/7zip/7zip-benchmark.test 192990097336 197727495942 2.5% test-suite :: CTMark/ClamAV/clamscan.test 80896861556 79484165212 -1.7% test-suite :: CTMark/sqlite3/sqlite3.test 77990896082 77343953874 -0.8% test-suite :: CTMark/consumer-typeset/consumer-typeset.test 56564081236 56118858184 -0.8% test-suite :: CTMark/mafft/pairlocalalign.test 54474697759 54263079601 -0.4% test-suite :: CTMark/SPASS/SPASS.test 65590532152 65405772667 -0.3% Geomean difference 2.2% Metric: compile_time Program baseline patched diff test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test 38.91 46.75 20.1% test-suite :: CTMark/7zip/7zip-benchmark.test 67.93 71.22 4.8% test-suite :: CTMark/Bullet/bullet.test 44.90 46.55 3.7% test-suite :: CTMark/kimwitu++/kc.test 23.58 24.28 3.0% test-suite :: CTMark/mafft/pairlocalalign.test 16.09 16.39 1.8% test-suite :: CTMark/ClamAV/clamscan.test 24.63 24.19 -1.8% test-suite :: CTMark/sqlite3/sqlite3.test 25.25 25.37 0.5% test-suite :: CTMark/consumer-typeset/consumer-typeset.test 17.28 17.33 0.2% test-suite :: CTMark/SPASS/SPASS.test 22.36 22.39 0.1% Geomean difference 3.4%
The maximum alignment is MaximumAlignment in Value.h, please use that over the shifting stuff.
Can you explain the logic here in a comment at the function entry, please.