Ping?

Thanks,
Kugan

> On 2 Mar 2026, at 6:33 pm, Kugan Vivekanandarajah <[email protected]> 
> wrote:
> 
> External email: Use caution opening links or attachments
> 
> 
> Ping ?
> 
> 
> We've seen several instances of this intermittent issue. Given the 
> profile-dependent nature of the data, the best approach is to ensure 
> robustness is to check nonzero_p() before the call. This effectively 
> mitigates the risk of a division by zero.
> 
> Thanks,
> Kugan
> 
> 
> 
> 
> 
>> On 18 Feb 2026, at 2:40 pm, Kugan Vivekanandarajah <[email protected]> 
>> wrote:
>> 
>> External email: Use caution opening links or attachments
>> Hi,
>> 
>> In symbol merging, ipa_merge_profiles() can encounter functions
>> where the entry block has an initialized but zero profile count. When
>> such counts are used as denominators in apply_scale(), it triggers an
>> assertion failure in profile-count.h:1192 (gcc_checking_assert(den.m_val)).
>> 
>> This patch adds nonzero_p checks before attempting to scale profile
>> counts, preventing division by zero.
>> 
>> This issue shows up randomly with AutoFDO (including profile bootstrap).
>> Tested with bootstrap and regression testing. Also tested with some
>> large applications where this first showed up.
>> 
>> gcc/ChangeLog:
>> 
>>        * ipa-utils.cc (ipa_merge_profiles): Add nonzero_p() checks
>>        for srcden and dstden before using them as denominators in
>>        apply_scale to prevent ICE.
>> 
>> This is hitting quite a few times including in:
>> 
>> during IPA pass: modref
>> lto1: internal compiler error: in apply_scale, at profile-count.h:1192
>> 0x2230c13 internal_error(char const*, ...)
>>        
>> /var/jenkins/workspace/GCC_oss-main/gcc/diagnostic-global-context.cc:787
>> 0x899ebf fancy_abort(char const*, int, char const*)
>>        /var/jenkins/workspace/GCC_oss-main/gcc/diagnostics/context.cc:1812
>> 0x98620f profile_count::apply_scale(profile_count, profile_count) const
>>        /var/jenkins/workspace/GCC_oss-main/gcc/profile-count.h:1192
>> 0xd190cb ipa_merge_profiles(cgraph_node*, cgraph_node*, bool)
>>        /var/jenkins/workspace/GCC_oss-main/gcc/ipa-utils.cc:637
>> 0x8f303b lto_symtab_merge_symbols_1
>>        /var/jenkins/workspace/GCC_oss-main/gcc/lto/lto-symtab.cc:934
>> 0x8f303b lto_symtab_merge_symbols()
>>        /var/jenkins/workspace/GCC_oss-main/gcc/lto/lto-symtab.cc:996
>> 0x9027d7 read_cgraph_and_symbols(unsigned int, char const**)
>>        /var/jenkins/workspace/GCC_oss-main/gcc/lto/lto-common.cc:3003
>> 0x8dce9f lto_main()
>>        /var/jenkins/workspace/GCC_oss-main/gcc/lto/lto.cc:663 
>> <http://lto.cc:663/>
>> 
>> Bootstrapped and regression tested on aavch64-linux-gnu with no new
>> regressions. Is this OK?
>> 
>> Thanks,
>> Kugan
>> 
>> 
>> 
>> 
>> 
>> 
>> <0001-AutoFDO-Fix-ICE-in-ipa_merge_profiles-when-entry-blo.patch>
> 

Reply via email to