On Thu, Feb 7, 2013 at 7:16 PM, Xinliang David Li <davi...@google.com> wrote:
> On Thu, Feb 7, 2013 at 9:28 AM, David Edelsohn <dje....@gmail.com> wrote:
>> On Thu, Feb 7, 2013 at 11:09 AM, Richard Biener
>> <richard.guent...@gmail.com> wrote:
>>
>>> Also note that for SPEC -funroll-loops helps GCC (yes ... we don't
>>> enable that by default at -O3, we probably should).
>>
>> Richi,
>>
>> Are you suggesting enabling -funroll-loops by default at -O3?  When I
>> checked earlier this year, GCC was too aggressive with loop unrolling
>> on non-numerically-intensive code and that option was not uniformly
>> beneficial, unfortunately.  It would be a good change if GCC's
>> unrolling heuristics were better.
>
> yes, GCC's unroller behavior is at two extremes -- tree level full
> unroller is too conservative, while rtl unroller is too aggressive
> (e.g, in cases where ICC unroll 2 times, GCC unrolls by 9 -- even when
> the body contains conditional branches and the trip count is a small
> constant (e.g. 100).
>
> For comparison. ICC turns on loop unrolling at O3 -- but it does it
> conservatively compared with GCC's behavior with -funroll-loops.  Full
> unrolling is turned on at O2 and above for all ICC, LLCM, and GCC, but
> GCC's one is almost useless -- it does not allow any code growth at O2
> which means it only kicks in for tiny loops with very small trip
> count. Both ICC and LLVM are more aggressive at O2.

I meant to enable the unroller at the GIMPLE level to the extent it is
only with -funroll-loops.  I agree the RTL level unroller is too aggressive.

Richard.

> David
>
>>
>> Thanks, David

Reply via email to