[PATCH] D122118: [MachineCopyPropagation] Eliminate spillage copies that might be caused by eviction chain

Kai Luo via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 28 02:15:05 PST 2022


lkail added a comment.

> Do you know on average how many chains we see per function?

I have run llvm-test-suite, here's the stats

|                   | functions | spill chain length | avg spill chain length per function | max spill chain length in one CU |
| powerpc64-ibm-aix | 60426     | 308                | 0.005097143613676                                 | 52                               |
| x86_64-linux-gnu  | 185938    | 646                | 0.003474276371694                                 | 130                              |
|

Compile time on powerpc64-ibm-aix

  Tests: 1039
  Metric: compile_time
  
  Program                                       compile_time           
                                                baseline     experiment
  SingleSour...sts/2002-10-09-ArrayResolution     0.07         0.50    
  MultiSourc...marks/Trimaran/enc-pc1/enc-pc1     0.14         0.86    
  SingleSour...e/UnitTests/2002-10-13-BadLoad     0.06         0.38    
  SingleSour...UnitTests/2002-08-02-CastTest2     0.06         0.37    
  SingleSour...nitTests/2002-04-17-PrintfChar     0.06         0.36    
  SingleSour.../UnitTests/conditional-gnu-ext     0.07         0.23    
  MultiSource/Benchmarks/llubenchmark/llu         0.10         0.35    
  SingleSour...tTests/2003-08-05-CastFPToUint     0.06         0.22    
  SingleSour...nitTests/2003-05-31-LongShifts     0.07         0.22    
  SingleSour...e/UnitTests/Vector/Altivec/lde     0.21         0.68    
  SingleSource/UnitTests/blockstret               0.06         0.18    
  SingleSour...e/UnitTests/2002-05-03-NotTest     0.07         0.21    
  SingleSour...UnitTests/2002-05-02-CastTest2     0.07         0.20    
  SingleSour...UnitTests/2003-08-11-VaListArg     0.15         0.43    
  SingleSource/UnitTests/StructModifyTest         0.07         0.19    
        compile_time             
  run       baseline   experiment
  count  1039.000000  1039.000000
  mean   1.108578     1.102223   
  std    4.496574     4.384102   
  min    0.000000     0.000000   
  25%    0.000000     0.000000   
  50%    0.000000     0.000000   
  75%    0.276350     0.278450   
  max    80.927800    77.030800 

Compile time on x86_64-linux-gnu

  Tests: 2991
  Metric: compile_time
  
  Program                                       compile_time           
                                                baseline     experiment
  UnitTests/...9-04-16-BitfieldInitialization     0.00         0.02    
  UnitTests/2002-04-17-PrintfChar                 0.00         0.01    
  UnitTests/2002-10-13-BadLoad                    0.00         0.01    
  UnitTests/block-copied-in-cxxobj-1              0.00         0.01    
  UnitTests/testcase-ExprConstant-1               0.01         0.02    
  UnitTests/2010-05-24-BitfieldTest               0.00         0.01    
  UnitTests/block-byref-test                      0.00         0.01    
  UnitTests/testcase-Expr-1                       0.01         0.02    
  UnitTests/byval-alignment                       0.01         0.02    
  Benchmarks/Misc/pi                              0.01         0.02    
  UnitTests/block-byref-cxxobj-test               0.01         0.01    
  UnitTests/2020-01-06-coverage-008               0.01         0.02    
  UnitTests/2002-08-02-CastTest2                  0.01         0.01    
  UnitTests/2002-05-03-NotTest                    0.02         0.02    
  UnitTests/2005-05-13-SDivTwo                    0.01         0.02    
        compile_time             
  l/r       baseline   experiment
  count  2991.000000  2991.000000
  mean   0.291675     0.291211   
  std    2.642554     2.642948   
  min    0.000000     0.000000   
  25%    0.000000     0.000000   
  50%    0.000000     0.000000   
  75%    0.000000     0.000000   
  max    99.370200    99.510200



> I just don't know how extensive the tests are.

I have tried bootstrapping stage3 on powerpc64-ibm-aix and x86_64-linux-gnu, no regression found. I'll follow your advice to send an RFC on discourse, currently I only enable it on PowerPC by default. https://reviews.llvm.org/D122118?id=485466 shows changes in other targets.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122118/new/

https://reviews.llvm.org/D122118



More information about the llvm-commits mailing list