hanchenye-llvm-project/polly/lib/Support
Michael Kruse 4c86a1d97b IR cleanup after CodeGeneration
Re-run canonicalization passes after Polly's code generation.

The set of passes currently added here are nearly all the passes between
--polly-position=early and --polly-position=before-vectorizer, i.e. all
passes that would usually run after Polly.

In order to run these only if Polly actually modified the code, we add a
function attribute "polly-optimzed" to a function that contains
generated code. The cleanup pass is skipped if the function does not
have this attribute.

There is no support by the (legacy) PassManager to run passes only under
some conditions. One could have wrapped all transformation passes to run
only when CodeGeneration changed the code, but the analyses would run
anyway. This patch creates an independent pass manager. The
disadvantages are that all analyses have to re-run even if preserved and
it does not honor compiler switches like the PassManagerBuilder does.

Differential Revision: http://reviews.llvm.org/D14333

llvm-svn: 254150
2015-11-26 12:36:25 +00:00
..
GICHelper.cpp stringFromIslObj: Do not crash when printing 'null' objects 2015-11-10 15:09:44 +00:00
RegisterPasses.cpp IR cleanup after CodeGeneration 2015-11-26 12:36:25 +00:00
SCEVAffinator.cpp Sort includes using Chandler's sort_includes.py script 2015-09-25 09:49:19 +00:00
SCEVValidator.cpp Use parameter constraints provided via llvm.assume 2015-11-12 03:25:01 +00:00
ScopHelper.cpp ScopDetection: Tighten the check for always executed 'error blocks' 2015-11-11 13:25:13 +00:00
ScopLocation.cpp Sort include directives 2015-05-09 09:13:42 +00:00