[PATCH] Improving LowerSwitch behavior for contiguous ranges

Owen Anderson resistor at mac.com
Tue Jun 10 12:25:41 PDT 2014

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.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140610/a5b15837/attachment.html>

More information about the llvm-commits mailing list