• Josh Bleecher Snyder's avatar
    cmd/compile: restore panic deduplication · e5bb5e39
    Josh Bleecher Snyder authored
    The switch to detailed position information broke
    the removal of duplicate panics on the same line.
    Restore it.
    
    Neutral compiler performance impact:
    
    name        old alloc/op      new alloc/op      delta
    Template         38.8MB ± 0%       38.8MB ± 0%    ~     (p=0.690 n=5+5)
    Unicode          28.7MB ± 0%       28.7MB ± 0%  +0.13%  (p=0.032 n=5+5)
    GoTypes           109MB ± 0%        109MB ± 0%    ~     (p=1.000 n=5+5)
    Compiler          457MB ± 0%        457MB ± 0%    ~     (p=0.151 n=5+5)
    SSA              1.09GB ± 0%       1.10GB ± 0%  +0.17%  (p=0.008 n=5+5)
    Flate            24.6MB ± 0%       24.5MB ± 0%  -0.35%  (p=0.008 n=5+5)
    GoParser         30.9MB ± 0%       31.0MB ± 0%    ~     (p=0.421 n=5+5)
    Reflect          73.4MB ± 0%       73.4MB ± 0%    ~     (p=0.056 n=5+5)
    Tar              25.6MB ± 0%       25.5MB ± 0%  -0.61%  (p=0.008 n=5+5)
    XML              40.9MB ± 0%       40.9MB ± 0%    ~     (p=0.841 n=5+5)
    [Geo mean]       71.6MB            71.6MB       -0.07%
    
    name        old allocs/op     new allocs/op     delta
    Template           394k ± 0%         395k ± 1%    ~     (p=0.151 n=5+5)
    Unicode            343k ± 0%         344k ± 0%  +0.38%  (p=0.032 n=5+5)
    GoTypes           1.16M ± 0%        1.16M ± 0%    ~     (p=1.000 n=5+5)
    Compiler          4.41M ± 0%        4.42M ± 0%    ~     (p=0.151 n=5+5)
    SSA               9.79M ± 0%        9.79M ± 0%    ~     (p=0.690 n=5+5)
    Flate              238k ± 1%         238k ± 0%    ~     (p=0.151 n=5+5)
    GoParser           321k ± 0%         321k ± 1%    ~     (p=0.548 n=5+5)
    Reflect            958k ± 0%         957k ± 0%    ~     (p=0.841 n=5+5)
    Tar                252k ± 0%         252k ± 1%    ~     (p=0.151 n=5+5)
    XML                401k ± 0%         400k ± 0%    ~     (p=1.000 n=5+5)
    [Geo mean]         741k              742k       +0.08%
    
    
    Reduces object files a little bit:
    
    name        old object-bytes  new object-bytes  delta
    Template           386k ± 0%         386k ± 0%  -0.04%  (p=0.008 n=5+5)
    Unicode            202k ± 0%         202k ± 0%    ~     (all equal)
    GoTypes           1.16M ± 0%        1.16M ± 0%  -0.04%  (p=0.008 n=5+5)
    Compiler          3.91M ± 0%        3.91M ± 0%  -0.08%  (p=0.008 n=5+5)
    SSA               7.91M ± 0%        7.91M ± 0%  -0.04%  (p=0.008 n=5+5)
    Flate              228k ± 0%         227k ± 0%  -0.28%  (p=0.008 n=5+5)
    GoParser           283k ± 0%         283k ± 0%  -0.01%  (p=0.008 n=5+5)
    Reflect            952k ± 0%         951k ± 0%  -0.03%  (p=0.008 n=5+5)
    Tar                188k ± 0%         187k ± 0%  -0.09%  (p=0.008 n=5+5)
    XML                406k ± 0%         406k ± 0%  -0.04%  (p=0.008 n=5+5)
    [Geo mean]         648k              648k       -0.06%
    
    
    This was discovered in the context for the Fannkuch benchmark.
    It shrinks the number of panicindex calls in that function
    from 13 back to 9, their 1.8.1 level.
    
    It shrinks the function text a bit, from 829 to 801 bytes.
    It slows down execution a little, presumably due to alignment (?).
    
    name          old time/op  new time/op  delta
    Fannkuch11-8   2.68s ± 2%   2.74s ± 1%  +2.09%  (p=0.000 n=19+20)
    
    After this CL, 1.8.1 and tip are identical:
    
    name          old time/op  new time/op  delta
    Fannkuch11-8   2.74s ± 2%   2.74s ± 1%   ~     (p=0.301 n=20+20)
    
    Fixes #20332
    
    Change-Id: I2aeacc3e8cf2ac1ff10f36c572a27856f4f8f7c9
    Reviewed-on: https://go-review.googlesource.com/43291
    Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    e5bb5e39
ssa.go 160 KB