[all-commits] [llvm/llvm-project] 4aa159: [analyzer] Ignoring `T v=v; ` idiom for uninitializ...

Ella Ma via All-commits all-commits at lists.llvm.org
Wed Jul 15 02:25:24 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4aa1590ad66a1bff9b3c74b4a2c7366473015b4c
      https://github.com/llvm/llvm-project/commit/4aa1590ad66a1bff9b3c74b4a2c7366473015b4c
  Author: Ella Ma <alansnape3058 at gmail.com>
  Date:   2026-07-15 (Wed, 15 Jul 2026)

  Changed paths:
    M clang/docs/ReleaseNotes.md
    M clang/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
    M clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
    A clang/test/Analysis/issue-173210-self-assign-init.c

  Log Message:
  -----------
  [analyzer] Ignoring `T v=v;` idiom for uninitialized variable checker and dead store checker (#187530)

Closing #173210

The self-assignment initialization `Type var = var;` is an idiom in C
code. The analyzer is expected to suppress the uninitialized assignment
reports and dead store reports for this idiom. Variables that are really
uninitialized will be reported until they are actually used. Since GCC
will not generate assembly code for such usage, even if under -O0
optimization (but Clang will), this patch resolves this problem by
ignoring such self-assigned `DeclStmt`s in the `ExprEngine`, as well as
in the `DeadStoreObs` of the dead store checker.

This ignorance will be applied to C variables and non-reference C++
variables. For record types in C++, since the constructors will always
be invoked, they will not be affected by this change.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list