[PATCH] D152495: [Clang][SemaCXX] Add unused warning for variables declared in condition expressions

Takuya Shimizu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 13 06:59:20 PDT 2023


hazohelet marked an inline comment as done.
hazohelet added inline comments.


================
Comment at: clang/lib/Sema/SemaExprCXX.cpp:4016-4019
+  // Ensure that `-Wunused-variable` will be emitted for condition variables
+  // that are not referenced later. e.g.: if (int var = init());
+  if (!T->isAggregateType())
+    ConditionVar->setReferenced(/*R=*/false);
----------------
cor3ntin wrote:
> aaron.ballman wrote:
> > `isAggregateType()` includes arrays and I think we still want to diagnose an unused array.
> Should it not be `Condition->hasSideEffects()` ? 
> Hopefully we want to be consistent with existing behavior https://godbolt.org/z/6abbPhn4G
The condition here only applies to condition variables.
C++ does not allow array type in condition variable, correct? I think it's OK to use `isAggregateType` as well then.


================
Comment at: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5348
       NewVar->getDeclContext()->isFunctionOrMethod() &&
-      OldVar->getType()->isDependentType())
+      OldVar->getType()->isDependentType() && !OldVar->isImplicit())
     DiagnoseUnusedDecl(NewVar);
----------------
aaron.ballman wrote:
> Which test case covers this change?
I wanted to suppress warnings against implicitly declared variables in range statements like `__range2`. I'll add a test for this.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D152495/new/

https://reviews.llvm.org/D152495



More information about the cfe-commits mailing list