[PATCH] Add if-chain to switch conversion pass.

David Malcolm dmalcolm@redhat.com
Tue Sep 1 14:50:54 GMT 2020


On Tue, 2020-09-01 at 13:47 +0200, Martin Liška wrote:
> Hello.
> 
> There's a new version of the patch attempt. I mentioned couple of
> issues with the v1 here:
> https://gcc.gnu.org/pipermail/gcc-patches/2020-March/542821.html
> 
> The patch addresses the biggest blocker which fact that the
> optimization was done unconditionally.
> Now the transformation happens only when a bit test or (and) a jump
> table can be created.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression
> tests. I'm also sending list
> of if-chains that are transformed in GCC.
> 
> Thoughts?
> Thanks,
> Martin

Hopefully someone with deeper knowledge of gimple optimizations can
review the patch properly, but here are a few nits I spotted (sorry):

> gcc/ChangeLog:

The older version of the patch had:
        PR tree-optimization/14799
        PR ipa/88702
in both ChangeLog entries.  Should this version?

> 	* Makefile.in: Add new gimple-if-to-switch.o.
> 	* common.opt: Add new option.
> 	* dbgcnt.def (DEBUG_COUNTER): Add new debug counter.
> 	* doc/invoke.texi:

Presumably "Document -fconvert-if-to-switch." or somesuch.

> 	* opts.c:

Presumably: "Add -fconvert-if-to-switch at OPT_LEVELS_2_PLUS." or
somesuch.

> 	* passes.def: Register new pass.
> 	* timevar.def (TV_TREE_IF_TO_SWITCH): Add new time variable.
> 	* tree-pass.h (make_pass_if_to_switch): New.
> 	* tree-switch-conversion.h: New file.
> 	* gimple-if-to-switch.c: New file.

I believe new C++ source files should have a ".cc" suffix.

> gcc/testsuite/ChangeLog:

(as above re bugzilla entries)

> 	* gcc.dg/tree-ssa/reassoc-32.c:

Presumably: "Add -fno-convert-if-to-switch."

> 	* gcc.dg/tree-ssa/if-to-switch-1.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-2.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-3.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-4.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-5.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-6.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-7.c: New test.
> 	* gcc.dg/tree-ssa/if-to-switch-8.c: New test.


Hope this is constructive
Dave



More information about the Gcc-patches mailing list