On May 17, 2019 6:47:00 PM GMT+02:00, Jeff Law <l...@redhat.com> wrote:
>On 5/16/19 10:17 PM, Feng Xue OS wrote:
>> This patch is meant to give user a way to optimize away those empty
>loops which are impossible to be recognized by compiler, such as C++
>STL container-based loop,
>> 
>>     void f (std::map<int, int> &m)
>>     {
>>         for (auto it = m.begin (); it != m.end (); ++it);
>>     }
>>  
>> An option "-ffinite-loop" is added to tell compiler about finiteness
>of loops so that compiler can apply the optimization.
>> 
>> Feng
>> 
>> diff --git a/gcc/ChangeLog b/gcc/ChangeLog
>> index d8bed3a..c55f2e6 100644
>> --- a/gcc/ChangeLog
>> +++ b/gcc/ChangeLog
>> @@ -1,3 +1,18 @@
>> +2019-05-16  Feng Xue  <f...@os.amperecomputing.com>
>> +
>> +        PR tree-optimization/89713
>> +        * doc/invoke.texi (-ffinite-loop): Document new option.
>> +        * common.opt (-ffinite-loop): New option.
>> +        * passes.def: Replace pass_cd_dce with pass_cd_dce2.
>> +        * tree-pass.h (pass_cd_dce2): New declaration.
>> +        * tree-ssa-dce.c (loop_has_true_exits): New function.
>> +        (find_obviously_necessary_stmts): Add
>aggressive_loop_removal
>> +        parameter.
>> +        (perform_tree_ssa_dce, tree_ssa_cd_dce): Likewise.
>> +        (class pass_cd_dce): Add new member aggressive_loop_removal.
>> +        (pass_cd_dce::pass_cd_dce: Add alr parameter.
>> +        (make_pass_cd_dce2): New function.
>I'm not a big fan of this patch.  I'd rather be looking at either
>improving our analysis or adding attributes to the loops to help the
>analysis bits prove termination.

And we had sth similar in the past and ended up removing it. 
-funsafe-loop-optimizations IIRC. 

Richard. 

>Jeff

Reply via email to