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: >