)]}' { "commit": "d7b669b3a30345cfcdb2fde2af6f48aa4b94845d", "tree": "a12dc3351fad673c0c38c047efd9b3627629c1ae", "parents": [ "ee6913cc8317c08b603daed64b07a17a95ec926a" ], "author": { "name": "Matheus Izvekov", "email": "mizvekov@gmail.com", "time": "Wed Sep 15 01:46:30 2021 +0200" }, "committer": { "name": "Tom Stellard", "email": "tstellar@redhat.com", "time": "Fri Sep 24 09:18:10 2021 -0700" }, "message": "[clang] don\u0027t mark as Elidable CXXConstruct expressions used in NRVO\n\nSee PR51862.\n\nThe consumers of the Elidable flag in CXXConstructExpr assume that\nan elidable construction just goes through a single copy/move construction,\nso that the source object is immediately passed as an argument and is the same\ntype as the parameter itself.\n\nWith the implementation of P2266 and after some adjustments to the\nimplementation of P1825, we started (correctly, as per standard)\nallowing more cases where the copy initialization goes through\nuser defined conversions.\n\nWith this patch we stop using this flag in NRVO contexts, to preserve code\nthat relies on that assumption.\nThis causes no known functional changes, we just stop firing some asserts\nin a cople of included test cases.\n\nReviewed By: rsmith\n\nDifferential Revision: https://reviews.llvm.org/D109800\n\n(cherry picked from commit d9308aa39b236064a680ca57178af3c731e13e49)\n", "tree_diff": [ { "type": "modify", "old_id": "8feb66995f95cc186c4dcc595cf443dc380d5baf", "old_mode": 33188, "old_path": "clang/include/clang/Sema/Initialization.h", "new_id": "420803f8e33c0cb0eb7f04f4fb1b17b90cd0ed42", "new_mode": 33188, "new_path": "clang/include/clang/Sema/Initialization.h" }, { "type": "modify", "old_id": "01c0168d61a40117748388704baa4b79872f9b21", "old_mode": 33188, "old_path": "clang/lib/AST/ExprConstant.cpp", "new_id": "8fe0061a9025a0b2e8ad86d2704c6d5865fe7ef0", "new_mode": 33188, "new_path": "clang/lib/AST/ExprConstant.cpp" }, { "type": "modify", "old_id": "96cf977ca29013af6814c7a32f641564f047664d", "old_mode": 33188, "old_path": "clang/lib/CodeGen/CGExprCXX.cpp", "new_id": "f42759e9db502a957c9d3f87a3a9bbfe8ab72823", "new_mode": 33188, "new_path": "clang/lib/CodeGen/CGExprCXX.cpp" }, { "type": "modify", "old_id": "a54bd8719178e7dd4d211467de11114c6301cdd1", "old_mode": 33188, "old_path": "clang/lib/Sema/Sema.cpp", "new_id": "191d89ea75c90b0661448e83652201d3c65b0ea3", "new_mode": 33188, "new_path": "clang/lib/Sema/Sema.cpp" }, { "type": "modify", "old_id": "94c728093e7c9f5f29dac80bc878a349a06e9e20", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaCoroutine.cpp", "new_id": "3d1899a57c72a04740975c75674882be25366205", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaCoroutine.cpp" }, { "type": "modify", "old_id": "da4f4f86209556815c062bc1faa956f13003004a", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaDeclCXX.cpp", "new_id": "ac01beb1bf934a01e0cd99356a06ec81bfe633ad", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaDeclCXX.cpp" }, { "type": "modify", "old_id": "0e6c933cd4f3cf4aa7b72f6a3ec8f57bbca15b92", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaExpr.cpp", "new_id": "f04eb9199024486ccdf6c78cdb616ee8adbae816", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaExpr.cpp" }, { "type": "modify", "old_id": "111ffa1f04a0e2ef2dcc280d94693f1c9496fee4", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaExprCXX.cpp", "new_id": "7961e794181304161cb7b6be48d5d8c654b70aad", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaExprCXX.cpp" }, { "type": "modify", "old_id": "eb1e9c3e5f7e45e739a2e2b95f6a165f0ed20c44", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaLambda.cpp", "new_id": "1fcc03d997c194aea2444809c8a12c358bbc6a7b", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaLambda.cpp" }, { "type": "modify", "old_id": "a329d0f22b0303553e76726f4e27965e3a0e7ac4", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaObjCProperty.cpp", "new_id": "74c73ace3c5ff7342471930c7264ab0245cb5f97", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaObjCProperty.cpp" }, { "type": "modify", "old_id": "f7e4110e6110ef27be00893f17543c6386dc6992", "old_mode": 33188, "old_path": "clang/lib/Sema/SemaStmt.cpp", "new_id": "03e9d7bc87a254b3086bf3496266dcbc888afb9e", "new_mode": 33188, "new_path": "clang/lib/Sema/SemaStmt.cpp" }, { "type": "modify", "old_id": "2d6eb9efeca20713a74126e5db70ae90b6c9e2f0", "old_mode": 33188, "old_path": "clang/test/CodeGen/nrvo-tracking.cpp", "new_id": "be405878f6f9b6225ac761dfa3f49b77e4f79898", "new_mode": 33188, "new_path": "clang/test/CodeGen/nrvo-tracking.cpp" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "72b2a5e00264c97ce1ed44d1cc05ab10cc2938af", "new_mode": 33188, "new_path": "clang/test/CodeGenCXX/copy-elision.cpp" } ] }