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: