[Sema] Use isAlwaysUninit for -Wuninitialized-const-reference after D79895
authorFangrui Song <maskray@google.com>
Tue, 2 Jun 2020 18:25:03 +0000 (11:25 -0700)
committerFangrui Song <maskray@google.com>
Tue, 2 Jun 2020 18:25:04 +0000 (11:25 -0700)
clang/lib/Analysis/UninitializedValues.cpp
clang/test/SemaCXX/warn-uninitialized-const-reference.cpp

index facda6e..3d44d1c 100644 (file)
@@ -673,7 +673,7 @@ void TransferFunctions::reportUse(const Expr *ex, const VarDecl *vd) {
 
 void TransferFunctions::reportConstRefUse(const Expr *ex, const VarDecl *vd) {
   Value v = vals[vd];
-  if (isUninitialized(v))
+  if (isAlwaysUninit(v))
     handler.handleConstRefUseOfUninitVariable(vd, getUninitUse(ex, vd, v));
 }
 
index de0c124..292793b 100644 (file)
@@ -14,7 +14,7 @@ int const_ref_use(const int &i);
 A const_use_A(const A a);
 int const_use(const int i);
 
-void f() {
+void f(int a) {
   int i;
   const_ref_use(i);             // expected-warning {{variable 'i' is uninitialized when passed as a const reference argument here}}
   int j = j + const_ref_use(j); // expected-warning {{variable 'j' is uninitialized when used within its own initialization}} expected-warning {{variable 'j' is uninitialized when passed as a const reference argument here}}
@@ -28,4 +28,9 @@ void f() {
 
   A a5;
   const_ref_use_A(a5);
+
+  int m;
+  if (a < 42)
+    m = 1;
+  const_ref_use(m);
 }