https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72855

--- Comment #7 from rguenther at suse dot de <rguenther at suse dot de> ---
On August 10, 2016 5:15:43 PM GMT+02:00, "wschmidt at gcc dot gnu.org"
<gcc-bugzi...@gcc.gnu.org> wrote:
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72855
>
>--- Comment #5 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
>(In reply to Richard Biener from comment #2)
>> If we have release checking enabled then we shuould hit
>> 
>> static void
>> df_analyze_1 (void)
>> {
>> ...
>> #ifndef ENABLE_DF_CHECKING
>>   if (df->changeable_flags & DF_VERIFY_SCHEDULED)
>> #endif
>>     df_verify ();
>> 
>> so I wonder why df->changeable_flags & DF_VERIFY_SCHEDULED is ever
>true
>> for release checking.  Can you track that down?  
>
>df_finish_pass has the following unguarded code at the end of the
>function:
>
>  if (flag_checking && verify)
>    df->changeable_flags |= DF_VERIFY_SCHEDULED;
>
>This is the only way that DF_VERIFY_SCHEDULED gets turned on by itself.

Yes, but that is guarded by flag_checking which defaults to 0.

>> But yes, performing df_verify for each loop in a function is
>excessive,
>> we seem to lack ever clearing said flag.  Does
>> 
>> Index: gcc/df-core.c
>> ===================================================================
>> --- gcc/df-core.c       (revision 239276)
>> +++ gcc/df-core.c       (working copy)
>> @@ -1833,6 +1833,7 @@ df_verify (void)
>>    if (df_live)
>>      df_live_verify_transfer_functions ();
>>  #endif
>> +  df->changeable_flags &= ~DF_VERIFY_SCHEDULED;
>>  }
>>  
>>  #ifdef DF_DEBUG_CFG
>> 
>> help in the non-DF-checking case?
>
>It should, since df_finish_pass isn't called (indirectly from
>iv_analysis_done)
>by the doloop code until after all of the loops have been processed.

If you manage to test that it's pre-approved.

Reply via email to