[LLVMdev] scalar replacement of aggregates slower?

Andrew Clinton andrew at sidefx.com
Wed Apr 4 16:19:08 PDT 2012


I just upgraded our optimizer to LLVM 3.0 from 2.8 and noticed that the 
scalar replacement of aggregates pass takes a lot longer for some code.  
Has there been a performance regression in this pass, or does it do more 
work?

LLVM 3.0:

   Total Execution Time: 1.0600 seconds (1.0526 wall clock)

    ---User Time---   --System Time--   --User+System--   ---Wall 
Time---  --- Name ---
    0.5100 ( 49.5%)   0.0000 (  0.0%)   0.5100 ( 48.1%)   0.5099 ( 
48.4%)  Scalar Replacement of Aggregates (SSAUp)
    0.1900 ( 18.4%)   0.0300 (100.0%)   0.2200 ( 20.8%)   0.2156 ( 
20.5%)  Scalar Replacement of Aggregates (DT)
    0.1200 ( 11.7%)   0.0000 (  0.0%)   0.1200 ( 11.3%)   0.1158 ( 
11.0%)  VEX Constant Propagation
    0.0200 (  1.9%)   0.0000 (  0.0%)   0.0200 (  1.9%)   0.0196 (  
1.9%)  Simplify the CFG
    0.0200 (  1.9%)   0.0000 (  0.0%)   0.0200 (  1.9%)   0.0181 (  
1.7%)  Module Verifier
...

LLVM 2.8:

   Total Execution Time: 0.6500 seconds (0.6489 wall clock)

    ---User Time---   --System Time--   --User+System--   ---Wall 
Time---  --- Name ---
    0.1400 ( 21.9%)   0.0000 (  0.0%)   0.1400 ( 21.5%)   0.1379 ( 
21.3%)  Scalar Replacement of Aggregates
    0.1200 ( 18.7%)   0.0000 (  0.0%)   0.1200 ( 18.5%)   0.1208 ( 
18.6%)  VEX Constant Propagation
    0.1000 ( 15.6%)   0.0000 (  0.0%)   0.1000 ( 15.4%)   0.1050 ( 
16.2%)  Scalar Replacement of Aggregates
    0.0400 (  6.3%)   0.0000 (  0.0%)   0.0400 (  6.2%)   0.0481 (  
7.4%)  Combine redundant instructions
    0.0200 (  3.1%)   0.0000 (  0.0%)   0.0200 (  3.1%)   0.0235 (  
3.6%)  Preliminary module verification
...



More information about the llvm-dev mailing list