ivopts improvement
Tom de Vries
vries@codesourcery.com
Thu Mar 3 14:29:00 GMT 2011
Hi Paolo,
On 03/03/2011 09:44 AM, Paolo Bonzini wrote:
> On 03/02/2011 11:01 PM, Tom de Vries wrote:
>> + if (TREE_CODE (nit) == COND_EXPR)
>> + {
>> + if (!loop_only_exit_p (loop, exit))
>> + return false;
>> +
>> + return iv_elimination_compare_lt (use, cand, bound, nit, comp);
>> + }
>> +
>
> You probably need a comment on top of iv_elimination_compare_lt,
> otherwise I'm left wondering why this isn't
>
> if (TREE_CODE (nit) == COND_EXPR
> && loop_only_exit_p (loop, exit)
> && iv_elimination_compare_lt (use, cand, bound, nit, comp))
> return true;
>
You're right, there's a comment missing. I added it now.
> Also, the check on nit is an optimization.
It's not, hopefully now explained by the comment.
> Perhaps you should add a
> gcc_checking_assert to i_elimination_compare_lt and/or remove this from
> get_lt_bound:
>
>> + if (TREE_CODE (nit) != COND_EXPR)
>> + return NULL_TREE;
>> +
It's duplicate test, so I turned it into a gcc_checking_assert.
> Or perhaps loop_only_exit_p could be optimized by computing it ahead of
> time, possibly at the same time as loop_body_includes_call. This way it
> becomes very cheap and the code above can just call
> iv_elimination_compare_lt without any pre-screening.
Gave it a try in a new patch.
reg-tested on x86_64. Better?
Thanks,
- Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: iterator.6.4-ml.patch
Type: text/x-patch
Size: 3036 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20110303/f774d292/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: iterator.6.5-ml.patch
Type: text/x-patch
Size: 6535 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20110303/f774d292/attachment-0001.bin>
More information about the Gcc-patches
mailing list