Performance anomaly in Livermore Loops when declarations are used
|
|
Bugzilla Link |
707 |
Created on |
May 11, 2010 18:13 |
Version |
svn |
OS |
Linux |
Architecture |
PC |
Extended Description
I've been running performance measurements of the Livermore Loops in sac.
When I compiled loop10.sac, I got a gazillion complaints about:
WARNING: Insufficient symbolic shape information available. Using explicit
WARNING: information to split index operation.
Looking at the code, we see in main():
rep = FibreScanInt( stdin );
n = FibreScanInt( stdin );
I looked at n and rep, and noted that they are not declared,
but are passed to the Loop() function, where they are NOT referenced or set.
In the spirit of cleaning things up, I tried some simple tests:
(This is op counts, compiling with AWLF options on rbe's private code.)
Original:
6715137927
n and rep removed from Loop() call:
7905664809 !! WORSE !!
n and rep removed from Loop() call; "int rep; int n;" added to main():
7850187292 slightly better
When compiled with -O3...
Original:
loop10.sac.exe.O3.16831:MODIFIED.papiex.rattler.18553:PAPI_TOT_INS: 965058436
n and rep removed from Loop() call:
loop10.sac.exe.O3.16831:MODIFIED.papiex.rattler.18633:PAPI_TOT_INS: 947804966
n and rep removed from Loop() call; "int rep; int n;" added to main():
loop10.sac.exe.O3.16831:MODIFIED.papiex.rattler.18753:PAPI_TOT_INS: 934451791
I do not understand what's going on here.