[PATCH] [Refactor] Replace RegionPasses by FunctionPasses

Johannes Doerfert doerfert at cs.uni-saarland.de
Tue Mar 3 05:15:35 PST 2015


Hey Tobias,

let me give you a short answer now and a more detailed one later:

- Compile time: We perform __much__ better on large test with a lot of regions. Here are some examples after one lnt run for a release build.

  MultiSource/Benchmarks/tramp3d-v4/tramp3d-v4  -89.42%   345.5400  36.5533   -     - SingleSource/Benchmarks/Misc-C++-EH/spirit  -78.71%   33.4433   7.1200  -     - MultiSource/Applications/kimwitu++/kc   -71.26%   77.1700   22.1766   -     - MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset  -67.55%   65.2370   21.1667   -     - SingleSource/UnitTests/DefaultInitDynArrays   -50.00%   0.0200  0.0100  -     - SingleSource/Benchmarks/Adobe-C++/simple_types_constant_folding   -42.39%   8.6267  4.9700  -     - MultiSource/Applications/sqlite3/sqlite3  -42.16%   60.4734   34.9800   -     - MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000  -39.79%   19.6970   11.8601   -     - SingleSource/Regression/C++/EH/inlined_cleanup  -38.34%   0.0433  0.0267  -     - MultiSource/Applications/JM/ldecod/ldecod   -37.42%   23.0533   14.4267   -     - MultiSource/Applications/oggenc/oggenc  -33.81%   24.6900   16.3433   -     - SingleSource/Benchmarks/Stanford/Treesort   -31.79%   0.0733  0.0500  -     - MultiSource/Applications/lemon/lemon  -30.80%   2.8467  1.9700  -     - SingleSource/Benchmarks/Shootout/strcat   -30.72%   0.0433  0.0300  -     - MultiSource/Applications/JM/lencod/lencod   -28.96%   39.8598   28.3167   -     - MultiSource/Benchmarks/PAQ8p/paq8p  -26.53%   4.6367  3.4067

  Note that for a debug build I more or less always time out on some of these benchmarks after 500s with the old pass system!  I admit the changes (especially in the DependenceInfo pass) can be made even more efficient but that is an easy patch I can write afterwards.
- I don't know enough about the new pass manager to say how this change will affect it.
- SCoPs affecting each other are a misconception by design (at least in my opinion). We should make the code generation aware of that (e.g., do not split the exit block of a region at 3 different locations in Polly!). However, this change passes lnt and all unit tests and we detect exactly the same number of SCoPs, that is at least a hint that we can make function passes work. With scalar/phi code generation and without independent blocks and code prepare the impact of one SCoP on another should be even smaller.

I hope you reconsider this change, at least after I provide more accurate
numbers.

Best regards,

  Johannes

- F412349: msg-20286-67.dat <http://reviews.llvm.org/F412349>


http://reviews.llvm.org/D7986

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list