zequanwu added inline comments.
================ Comment at: clang/lib/Sema/AnalysisBasedWarnings.cpp:1590-1600 + // flush all const reference uses diags + for (const auto &P : constRefUses) { + const VarDecl *vd = P.first; + const MappedType &V = P.second; + + UsesVec *vec = V.getPointer(); + for (const auto &U : *vec) { ---------------- aeubanks wrote: > zequanwu wrote: > > rsmith wrote: > > > Do we want any idiomatic-self-init special-case handling here? For > > > example: > > > > > > ``` > > > void f(const int&); > > > void g() { > > > int a = a; > > > f(a); > > > } > > > ``` > > > > > > Following the logic above, should that warn on the `int a = a;` not on > > > the `f(a)` call? Or should we warn only on the `f(a)` call itself in this > > > case? It seems like it might be surprising to say that `a` is > > > "uninitialized" here, since an initializer was provided, even though it > > > was a garbage one. > > For this case, I think we should warn at `int a = a`, like the comment in > > `DiagnoseUninitializedUse` said, > > https://github.com/llvm/llvm-project/blob/master/clang/lib/Sema/AnalysisBasedWarnings.cpp#L986-L996 > > > > `f(a)` is considered as accessing `a`. > Doesn't `DiagnoseUninitializedUse` say that we shouldn't warn at `int a = a`? The last sentence of the comment says that `int a = a` left `a` as uninitialized state, and we should warn at `int a = a` if there is an access of `a` in uninitialized state. Otherwise, we don't need to warn. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79895/new/ https://reviews.llvm.org/D79895 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits