[PATCH] Improving LowerSwitch behavior for contiguous ranges

Eric Christopher echristo at gmail.com
Tue Jun 10 12:39:29 PDT 2014


On Tue, Jun 10, 2014 at 12:25 PM, Owen Anderson <resistor at mac.com> wrote:
>
> On Jun 10, 2014, at 11:52 AM, Eric Christopher <echristo at gmail.com> wrote:
>
> On Tue, Jun 10, 2014 at 11:48 AM, Owen Anderson <resistor at mac.com> wrote:
>
>
> On Jun 10, 2014, at 11:37 AM, Hal Finkel <hfinkel at anl.gov> wrote:
>
>
> Yep. Though I have to admit that it'd be nice if we had a range
> propagation pass that would clean this up rather than special casing.
> :\
>
>
> Doesn't LVI do range propagation?
>
>
>
> Sort of.
>
> That said, range propagation isn’t a good solution to this problem.
> SwitchLowering generally happens towards the end of a compilation pipeline,
> and you don’t want to run any significant set of CFG optimizations after it
> because they might re-introduce switches.
>
>
> Fair enough. I figured range propagation would just prove dead blocks
> without doing significant CFG optimizations.
>
>
> It probably doesn’t do any today, but we don’t have a good way to enforce
> the invariant that it won’t in the future.  More generally, LowerSwitch is
> firmly a lowering operation, and it’s not unreasonable to assume we won’t be
> running a lot of optimizations after it.  It should try to produce good
> output without the need for further cleanup.
>

Sure, seems reasonable. I don't have a strong opinion here.

-eric




More information about the llvm-commits mailing list