[llvm] r201148 - [LPM] Switch LICM to actively use LCSSA in addition to preserving it.

Tobias Grosser tobias at grosser.es
Tue Feb 11 11:58:40 PST 2014


On 02/11/2014 07:52 AM, Chandler Carruth wrote:
> Author: chandlerc
> Date: Tue Feb 11 06:52:27 2014
> New Revision: 201148
>
> URL: http://llvm.org/viewvc/llvm-project?rev=201148&view=rev
> Log:
> [LPM] Switch LICM to actively use LCSSA in addition to preserving it.
>
> Fixes PR18753 and PR18782.
>
> This is necessary for LICM to preserve LCSSA correctly and efficiently.
> There is still some active discussion about whether we should be using
> LCSSA, but we can't just immediately stop using it and we *need* LICM to
> preserve it while we are using it. We can restore the old SSAUpdater
> driven code if and when there is a serious effort to remove the reliance
> on LCSSA from all of the loop passes.
>
> However, this also serves as a great example of why LCSSA is very nice
> to have. This change significantly simplifies the process of sinking
> instructions for LICM, and makes it quite a bit less expensive.
>
> It wouldn't even be as complex as it is except that I had to start the
> process of removing the big recursive LCSSA formation hammer in order to
> switch even this much of the re-forming code to asserting that LCSSA was
> preserved. I'll fully remove that next just to tidy things up until the
> LCSSA debate settles one way or the other.

FIY: this does not cause any performance changes on the -O3 amd64 tester.

http://llvm.org/perf/db_default/v4/nts/22118?num_comparison_runs=10&test_filter=&test_min_value_filter=&aggregation_fn=median&compare_to=22112&submit=Update



More information about the llvm-commits mailing list