This modifies the order in which Polly passes are executed.
Assuming a function has two scops (A and B), the order before was:
FunctionPassManager:
ScopDetection IndependentBlocks TempScopInfo for A and B RegionPassManager: ScopInfo for A DependenceInfo for A IslScheduleOptimizer for A IslAstInfo for A CodeGeneration for A ScopInfo for B DependenceInfo for B IslScheduleOptimizer for B IslAstInfo for B CodeGeneration for B
After this patch:
FunctionPassManager:
ScopDetection IndependentBlocks RegionPassManager: TempScopInfo for A ScopInfo for A DependenceInfo for A IslScheduleOptimizer for A IslAstInfo for A CodeGeneration for A TempScopInfo for B ScopInfo for B DependenceInfo for B IslScheduleOptimizer for B IslAstInfo for B CodeGeneration for B
TempScopInfo for B might store information and references to the IR that CodeGeneration for A might modify. Changing the order ensures that the IR is not modified from the analysis of a region until code generation.
This is a preparation for allowing PHI nodes in exit blocks which are entries for different regions. CodeGeneration would "steal" each other's PHI nodes.