Thanks.

I just committed the patch to gcc12 as:

https://gcc.gnu.org/pipermail/gcc-cvs/2022-January/359400.html

Qing
> On Jan 17, 2022, at 5:36 AM, Richard Biener <richard.guent...@gmail.com> 
> wrote:
> 
> On Sat, Jan 15, 2022 at 5:49 PM Qing Zhao <qing.z...@oracle.com> wrote:
>> 
>> Hi, Richard,
>> 
>> This is the updated version for the change of "Enable -Wuninitialized + 
>> -ftrivial-auto-var-init for  address taken variables”.
>> 
>> Compared to the previous patch, I mainly made the following change:
>> 
>> Delete the 4th parameter of “warn_uninit”, construct the warning message 
>> string based on the value of OPT and VAR.
>> 
>> This patch has been bootstrapped and regressing tested on both X86 and 
>> aarch64.
>> 
>> Okay for GCC12?
>> 
>> thanks.
>> 
>> Qing.
>> 
>> ==================================
>> Enable -Wuninitialized + -ftrivial-auto-var-init for address
>> taken variables.
>> 
>> With -ftrivial-auto-var-init, the address taken auto variable is replaced 
>> with
>> a temporary variable during gimplification, and the original auto variable 
>> might
>> be eliminated by compiler optimization completely. As a result, the current
>> uninitialized warning analysis cannot get enough information from the IR,
>> therefore the uninitialized warnings for address taken variable cannot be
>> issued based on the current implemenation of -ftrival-auto-var-init.
>> 
>> For more info please refer to:
>> https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577431.html
>> 
>> In order to improve this situation, we can improve uninitialized analysis
>> for address taken auto variables with -ftrivial-auto-var-init as following:
>> 
>> for the following stmt:
>> 
>>    _1 = .DEFERRED_INIT (4, 2, &"alt_reloc"[0]);
>>    if (_1 != 0)
>> 
>> The original variable DECL has been eliminated from the IR, all the necessary
>> information that is needed for reporting the warnings for DECL can be 
>> acquired
>> from the call to .DEFERRED_INIT.
>> 
>>    A. the name string of DECL from the 3rd parameter of the call;
>>    B. the location of the DECL from the location of the call;
>>    C. the call can also be used to hold the information on whether the 
>> warning
>>       has been issued or not to suppress warning messages when needed;
>> 
>> The current testing cases for uninitialized warnings + 
>> -ftrivial-auto-var-init
>> are adjusted to reflect the fact that we can issue warnings for address taken
>> variables.
> 
> OK.
> 
> Thanks,
> Richard.
> 
>> gcc/ChangeLog:
>> 
>> 2022-01-14  qing zhao  <qing.z...@oracle.com>
>> 
>>        * tree-ssa-uninit.c (warn_uninit): Delete the 4th parameter. Handle
>>        .DEFERRED_INIT call with an anonymous SSA_NAME specially.
>>        (check_defs): Handle .DEFERRED_INIT call with an anonymous SSA_NAME
>>        specially.
>>        (warn_uninit_phi_uses): Delete the 4th actual when call warn_uninit.
>>        (warn_uninitialized_vars): Likewise.
>>        (warn_uninitialized_phi): Likewise.
>> 
>> The complete patch is:

Reply via email to