Mark Mitchell wrote on 01/01/07 14:46:
What a thread this has turned out to be.
Indeed. In general, I'm not too thrilled with the idea of disabling transformations for the sake of non-conforming code. However, I would not mind a -fconforming flag similar to -fstrict-aliasing.
I haven't yet seen that anyone has actually tried the obvious: run SPEC with and without -fwrapv. Would someone please do that? Or, pick your favorite high-performance application and do the same. But, let's get some concrete data as to how much this optimization helps.
On x86_64: SPEC2000int is almost identical. SPEC2000fp shows a -6% drop when using -fwrapv. ----------------------------------------------------------------------------- HARDWARE -------- CPU: Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz CPU MHz: 2128.001 FPU: Integrated CPU(s) enabled: 2 Secondary Cache: 2048 KB Memory: 2053792 kB SOFTWARE -------- Operating System: Linux 2.6.18-1.2868.fc6 Compiler: GNU C version 4.3.0 20070101 (experimental) (x86_64-unknow n-linux-gnu) NOTES ----- Base is -O2 -march=nocona -mtune=generic -fwrapv Peak is -O2 -march=nocona -mtune=generic SPEC CINT2000 Summary Estimated Estimated Base Base Base Peak Peak Peak Benchmarks Ref Time Run Time Ratio Ref Time Run Time Ratio ------------ -------- -------- -------- -------- -------- -------- 164.gzip 1400 127 1099* 1400 127 1106* 175.vpr 1400 114 1227* 1400 116 1209* 176.gcc X X 181.mcf 1800 195 921* 1800 194 927* 186.crafty 1000 48.7 2054* 1000 48.2 2076* 197.parser 1800 197 915* 1800 195 923* 252.eon 1300 64.7 2011* 1300 64.8 2005* 253.perlbmk X X 254.gap 1100 64.9 1696* 1100 65.3 1685* 255.vortex X X 256.bzip2 1500 108 1384* 1500 108 1395* 300.twolf 3000 169 1771* 3000 169 1775* Est. SPECint_base2000 1391 Est. SPECint2000 1394 SPEC CFP2000 Summary Estimated Estimated Base Base Base Peak Peak Peak Benchmarks Ref Time Run Time Ratio Ref Time Run Time Ratio ------------ -------- -------- -------- -------- -------- -------- 168.wupwise 1600 103 1547* 1600 88.3 1812* 171.swim 3100 152 2033* 3100 145 2131* 172.mgrid 1800 193 935* 1800 131 1376* 173.applu 2100 195 1076* 2100 188 1116* 177.mesa 1400 71.1 1968* 1400 71.3 1964* 178.galgel 2900 107 2699* 2900 99.1 2927* 179.art 2600 96.7 2689* 2600 94.6 2749* 183.equake 1300 69.0 1884* 1300 67.1 1939* 187.facerec 1900 149 1273* 1900 146 1302* 188.ammp 2200 170 1292* 2200 168 1312* 189.lucas 2000 102 1965* 2000 98.7 2025* 191.fma3d 2100 195 1079* 2100 192 1092* 200.sixtrack 1100 199 553* 1100 198 556* 301.apsi 2600 208 1248* 2600 196 1329* Est. SPECfp_base2000 1463 Est. SPECfp2000 1560 -----------------------------------------------------------------------------