This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Jump threading in tree dom pass prevents if-conversion & following vectorization


Yes, it can be vectorized with your suggestion.

~/install-4.8/bin/gcc vect-ifconv-2.c  -O2 -fdump-tree-ifcvt-details -ftree-vectorize  -save-temps --param max-jump-thread-duplication-stmts=0

See attached assemble file.

Bingfeng


-----Original Message-----
From: James Greenhalgh [mailto:james.greenhalgh@arm.com] 
Sent: 22 November 2013 11:50
To: Bingfeng Mei
Cc: Andrew Pinski; gcc@gcc.gnu.org
Subject: Re: Jump threading in tree dom pass prevents if-conversion & following vectorization

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


Attachment: vect-ifconv-2.s
Description: vect-ifconv-2.s


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]