This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Jump threading in tree dom pass prevents if-conversion & following vectorization
- From: James Greenhalgh <james dot greenhalgh at arm dot com>
- To: Bingfeng Mei <bmei at broadcom dot com>
- Cc: Andrew Pinski <pinskia at gmail dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Fri, 22 Nov 2013 11:49:58 +0000
- Subject: Re: Jump threading in tree dom pass prevents if-conversion & following vectorization
- Authentication-results: sourceware.org; auth=none
- References: <B71DF1153024A14EABB94E39368E44A60420FE4A at SJEXCHMB13 dot corp dot ad dot broadcom dot com> <CA+=Sn1=1-k_0wBwMi=xhHERr+MBwgTr=8DnqZn_xQLXEn4wNoA at mail dot gmail dot com> <B71DF1153024A14EABB94E39368E44A604210476 at SJEXCHMB13 dot corp dot ad dot broadcom dot com>
On Fri, Nov 22, 2013 at 11:03:22AM +0000, Bingfeng Mei wrote:
> Well, in your modified example, it is still due to jump threading that produce
> code of bad control flow that cannot be if-converted and vectorized, though in
> tree-vrp pass this time.
>
> Try this
> ~/install-4.8/bin/gcc vect-ifconv-2.c -O2 -fdump-tree-ifcvt-details -ftree-vectorize -save-temps -fno-tree-vrp
>
> The code can be vectorized.
>
> Grep "threading" in gcc, it seems that dom and vrp passes are two places that apply
> jump threading. Any other place? I think we need an target hook to control it.
>
You can effectively disable jump-threading using:
--param max-jump-thread-duplication-stmts=0
(grep dump files for "Jumps threaded")
I don't see Andrew's code vectorized even with jump-threading disabled
so I think Andrew is correct and this is some other missed optimization.
James