Hey,
What is jump threading? I've not heard of it before (
http://en.wikipedia.org/wiki/Jump_threading is basically the description
of the compiler flag )
Alec
On 22/11/13 19:06, Bingfeng Mei wrote:
I understand what jump threading does. In theory it reduces number of
instructions executed. But it creates messy program structure and prevents
further optimizations, at least for target we have (VLIW-based DSP with
predicated execution).
I just ran through 8 audio codecs we use as internal benchmark. 5 out of 8
codecs have similar performance with/without jump threading (give or take
0.1-0.2%). For the other 3, no
jump threading version outperforms by 1-2.5%. I didn't even enable
-ftree-vectorize.
I am going to do some further investigation and check whether if-conversion can
be fixed without disabling jump threading.
Bingfeng
-----Original Message-----
From: Jeff Law [mailto:l...@redhat.com]
Sent: 22 November 2013 17:17
To: Bingfeng Mei; Andrew Pinski; Richard Biener
Cc: gcc@gcc.gnu.org
Subject: Re: Jump threading in tree dom pass prevents if-conversion & following
vectorization
On 11/22/13 10:13, Bingfeng Mei wrote:
So if we are about to fix this in if-conversion, we need to do both in tree & rtl
as both ifcvt & ce passes cannot handle it.
I am still not convinced jump threading is good for target with predicated
execution (assuming no fix for if-conversion). I am doing benchmarking on our
target now.
I'd be quite surprised if your tests show that it's not beneficial.
In simplest terms jump threading identifies conditional branches which
can have their destination statically determined based on the path taken
to the static branch.
And more generally, we try *real* hard not to start enabling/disabling
tree passes on a per-target basis. The end result if we were to start
doing that is an unmaintainable mess.
Jeff