[PATCH] Hoist loop invariant statements containing data refs with zero-step during loop-versioning in vectorization.
Jeff Law
law@redhat.com
Sat Oct 19 09:01:00 GMT 2013
On 10/18/13 03:56, Richard Biener wrote:
> On Thu, 17 Oct 2013, Cong Hou wrote:
>
>> I tested this case with -fno-tree-loop-im and -fno-tree-pre, and it
>> seems that GCC could hoist j+1 outside of the i loop:
>>
>> t3.c:5:5: note: hoisting out of the vectorized loop: _10 = (sizetype) j_25;
>> t3.c:5:5: note: hoisting out of the vectorized loop: _11 = _10 + 1;
>> t3.c:5:5: note: hoisting out of the vectorized loop: _12 = _11 * 4;
>> t3.c:5:5: note: hoisting out of the vectorized loop: _14 = b_13(D) + _12;
>> t3.c:5:5: note: hoisting out of the vectorized loop: _15 = *_14;
>> t3.c:5:5: note: hoisting out of the vectorized loop: _16 = _15 + 1;
>>
>>
>> But your suggestion is still nice as it can remove a branch and make
>> the code more brief. I have updated the patch and also included the
>> nested loop example into the test case.
>
> Ok if it passes bootstrap & regtest.
Bootstrapped & regression tested on x86_64-unknown-linux-gnu. Installed
on Cong's behalf.
Cong -- if you plan on contributing regularly to GCC, please start the
process for write privileges. This form should have everything you need:
https://sourceware.org/cgi-bin/pdw/ps_form.cgi
Jeff
More information about the Gcc-patches
mailing list