[PATCH] D85574: [Sema] Fix missing warning on initializer lists on field initializers with overloaded operators
This revision was automatically updated to reflect the committed changes. Closed by commit rG4aaa97700377: [Sema] Fix missing warning on initializer lists on field initializers with… (authored by zequanwu). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85574/new/ https://reviews.llvm.org/D85574 Files: clang/lib/Sema/SemaDeclCXX.cpp clang/test/SemaCXX/uninitialized.cpp Index: clang/test/SemaCXX/uninitialized.cpp === --- clang/test/SemaCXX/uninitialized.cpp +++ clang/test/SemaCXX/uninitialized.cpp @@ -1303,6 +1303,20 @@ d3{ d3.b, num } // expected-warning{{uninitialized}} {} }; + + struct E { +E(); +E foo(); +E* operator->(); + }; + + struct F { F(E); }; + + struct EFComposed { +F f; +E e; +EFComposed() : f{ e->foo() }, e() {} // expected-warning{{uninitialized}} + }; } namespace template_class { Index: clang/lib/Sema/SemaDeclCXX.cpp === --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -3577,8 +3577,10 @@ Base = SubME->getBase(); } - if (!isa(Base->IgnoreParenImpCasts())) + if (!isa(Base->IgnoreParenImpCasts())) { +Visit(Base); return; + } if (AddressOf && AllPODFields) return; Index: clang/test/SemaCXX/uninitialized.cpp === --- clang/test/SemaCXX/uninitialized.cpp +++ clang/test/SemaCXX/uninitialized.cpp @@ -1303,6 +1303,20 @@ d3{ d3.b, num } // expected-warning{{uninitialized}} {} }; + + struct E { +E(); +E foo(); +E* operator->(); + }; + + struct F { F(E); }; + + struct EFComposed { +F f; +E e; +EFComposed() : f{ e->foo() }, e() {} // expected-warning{{uninitialized}} + }; } namespace template_class { Index: clang/lib/Sema/SemaDeclCXX.cpp === --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -3577,8 +3577,10 @@ Base = SubME->getBase(); } - if (!isa(Base->IgnoreParenImpCasts())) + if (!isa(Base->IgnoreParenImpCasts())) { +Visit(Base); return; + } if (AddressOf && AllPODFields) return; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D85574: [Sema] Fix missing warning on initializer lists on field initializers with overloaded operators
rtrieu accepted this revision. rtrieu added a comment. This revision is now accepted and ready to land. LGTM Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85574/new/ https://reviews.llvm.org/D85574 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D85574: [Sema] Fix missing warning on initializer lists on field initializers with overloaded operators
zequanwu added inline comments. Comment at: clang/lib/Sema/SemaDeclCXX.cpp:3584-3585 if (!isa(Base->IgnoreParenImpCasts())) return; rtrieu wrote: > Does the warning work if it was changed to be "Visit(Base);" before the > return here instead of the change above? Yes, done. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85574/new/ https://reviews.llvm.org/D85574 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D85574: [Sema] Fix missing warning on initializer lists on field initializers with overloaded operators
zequanwu updated this revision to Diff 284551. zequanwu marked an inline comment as done. zequanwu added a comment. Address comment. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85574/new/ https://reviews.llvm.org/D85574 Files: clang/lib/Sema/SemaDeclCXX.cpp clang/test/SemaCXX/uninitialized.cpp Index: clang/test/SemaCXX/uninitialized.cpp === --- clang/test/SemaCXX/uninitialized.cpp +++ clang/test/SemaCXX/uninitialized.cpp @@ -1303,6 +1303,20 @@ d3{ d3.b, num } // expected-warning{{uninitialized}} {} }; + + struct E { +E(); +E foo(); +E* operator->(); + }; + + struct F { F(E); }; + + struct EFComposed { +F f; +E e; +EFComposed() : f{ e->foo() }, e() {} // expected-warning{{uninitialized}} + }; } namespace template_class { Index: clang/lib/Sema/SemaDeclCXX.cpp === --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -3577,8 +3577,10 @@ Base = SubME->getBase(); } - if (!isa(Base->IgnoreParenImpCasts())) + if (!isa(Base->IgnoreParenImpCasts())) { +Visit(Base); return; + } if (AddressOf && AllPODFields) return; Index: clang/test/SemaCXX/uninitialized.cpp === --- clang/test/SemaCXX/uninitialized.cpp +++ clang/test/SemaCXX/uninitialized.cpp @@ -1303,6 +1303,20 @@ d3{ d3.b, num } // expected-warning{{uninitialized}} {} }; + + struct E { +E(); +E foo(); +E* operator->(); + }; + + struct F { F(E); }; + + struct EFComposed { +F f; +E e; +EFComposed() : f{ e->foo() }, e() {} // expected-warning{{uninitialized}} + }; } namespace template_class { Index: clang/lib/Sema/SemaDeclCXX.cpp === --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -3577,8 +3577,10 @@ Base = SubME->getBase(); } - if (!isa(Base->IgnoreParenImpCasts())) + if (!isa(Base->IgnoreParenImpCasts())) { +Visit(Base); return; + } if (AddressOf && AllPODFields) return; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D85574: [Sema] Fix missing warning on initializer lists on field initializers with overloaded operators
rtrieu added inline comments. Comment at: clang/lib/Sema/SemaDeclCXX.cpp:3584-3585 if (!isa(Base->IgnoreParenImpCasts())) return; Does the warning work if it was changed to be "Visit(Base);" before the return here instead of the change above? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85574/new/ https://reviews.llvm.org/D85574 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D85574: [Sema] Fix missing warning on initializer lists on field initializers with overloaded operators
zequanwu created this revision. zequanwu added a reviewer: rtrieu. Herald added a project: clang. Herald added a subscriber: cfe-commits. zequanwu requested review of this revision. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D85574 Files: clang/lib/Sema/SemaDeclCXX.cpp clang/test/SemaCXX/uninitialized.cpp Index: clang/test/SemaCXX/uninitialized.cpp === --- clang/test/SemaCXX/uninitialized.cpp +++ clang/test/SemaCXX/uninitialized.cpp @@ -1303,6 +1303,20 @@ d3{ d3.b, num } // expected-warning{{uninitialized}} {} }; + + struct E { +E(); +E foo(); +E* operator->(); + }; + + struct F { F(E); }; + + struct EFComposed { +F f; +E e; +EFComposed() : f{ e->foo() }, e() {} // expected-warning{{uninitialized}} + }; } namespace template_class { Index: clang/lib/Sema/SemaDeclCXX.cpp === --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -3575,6 +3575,10 @@ AllPODFields = false; Base = SubME->getBase(); + +if (CXXOperatorCallExpr *COCE = dyn_cast(Base)) + if (COCE->getNumArgs() > 0) +Base = COCE->getArg(0); } if (!isa(Base->IgnoreParenImpCasts())) Index: clang/test/SemaCXX/uninitialized.cpp === --- clang/test/SemaCXX/uninitialized.cpp +++ clang/test/SemaCXX/uninitialized.cpp @@ -1303,6 +1303,20 @@ d3{ d3.b, num } // expected-warning{{uninitialized}} {} }; + + struct E { +E(); +E foo(); +E* operator->(); + }; + + struct F { F(E); }; + + struct EFComposed { +F f; +E e; +EFComposed() : f{ e->foo() }, e() {} // expected-warning{{uninitialized}} + }; } namespace template_class { Index: clang/lib/Sema/SemaDeclCXX.cpp === --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -3575,6 +3575,10 @@ AllPODFields = false; Base = SubME->getBase(); + +if (CXXOperatorCallExpr *COCE = dyn_cast(Base)) + if (COCE->getNumArgs() > 0) +Base = COCE->getArg(0); } if (!isa(Base->IgnoreParenImpCasts())) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits