Changes
Summary
- [RS4GC] Simplify attribute handling code NFC Avoids use of AttributeList::getNumSlots, making it easier to change the underlying implementation.
- [Codegen] Disable Polly's codegen verification by default As has been reported in the previous commit, codegen verification can result in quadratic compile time increases for large functions with many scops. This is certainly not something we would like to have in the Polly default configuration. Hence, we disable codegen verification by default -- also to see if this resolves some of the compilation timeouts we currently see on the AOSP buildbots. We still leave this feature in Polly as it has shown _very_ useful for debugging. In fact, we may want to have a discussion if we can bring this feature back in a way that does not impact compilation time so much. Thanks to Eli Friedman <efriedma@codeaurora.org> for reporting this issue and for providing the test case in the previous commit (where I forgot to acknowledge him).
- [CodeGen] Skip verify if -polly-codegen-verify is set to false Before this change, we always tried to verify the function and printed verification errors, but just did not abort in case -polly-codegen-verify=false was set and verification failed. As verification can become very cosly -- for large functions with many scops we may verify the very same function very often -- this can affect compile time very negatively. Hence, we respect the -polly-codegen-verify flag with this check, ensuring that no verification is run if -polly-codegen-verify=false. This reduces code generation time from 26 seconds to 4 seconds on the test case below with -polly-codegen-verify=false: struct X { int x; }; void a(); #define SIG (int x, X **y, X **z) typedef void (*fn)SIG; #define FN { for (int i = 0; i < x; ++i) { (*y)[i].x += (*z)[i].x; } a(); } #define FN5 FN FN FN FN FN #define FN25 FN5 FN5 FN5 FN5 #define FN125 FN25 FN25 FN25 FN25 FN25 #define FN250 FN125 FN125 #define FN1250 FN250 FN250 FN250 FN250 FN250 void x SIG { FN1250 }
Change Type | Path in Repository | Path in Workspace |
---|---|---|
![]() | /llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp (diff) | llvm-revision.src/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp |
Change Type | Path in Repository | Path in Workspace |
![]() | /polly/trunk/lib/CodeGen/CodeGeneration.cpp (diff) | llvm-revision.src/polly/trunk/lib/CodeGen/CodeGeneration.cpp |
Change Type | Path in Repository | Path in Workspace |
![]() | /polly/trunk/lib/CodeGen/CodeGeneration.cpp (diff) | llvm-revision.src/polly/trunk/lib/CodeGen/CodeGeneration.cpp |