[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-06-18 Thread Taiju Tsuiki via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC335019: Update NRVO logic to support early return (Attempt 2) (authored by tzik, committed by ). Changed prior to commit: https://reviews.llvm.org/D47586?vs=151847=151848#toc Repository: rC Clang

[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-06-18 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added inline comments. Comment at: test/CodeGenCXX/nrvo-noopt.cpp:1 +// RUN: %clang_cc1 -emit-llvm -O0 -o - %s | FileCheck %s + rsmith wrote: > You don't need the `-O0` here; that's the default. Thanks! Done. Repository: rC Clang

[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-06-18 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 151847. tzik marked an inline comment as done. tzik added a comment. drop an unneeded -O0 Repository: rC Clang https://reviews.llvm.org/D47586 Files: include/clang/AST/Decl.h include/clang/Sema/Scope.h lib/Sema/Scope.cpp lib/Sema/SemaDecl.cpp

[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-06-11 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. rsmith: ping. Any chance you could review this? Repository: rC Clang https://reviews.llvm.org/D47586 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-05-31 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a reviewer: rsmith. tzik added a comment. rsmith: PTAL. This is the previous attempt plus a fix and a test. The diff is SemaTemplateInstantiateDecl.cpp part that propagate disabled NRVO state to the instantiated local variable. On the previous

[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-05-31 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 149299. tzik added a comment. test Repository: rC Clang https://reviews.llvm.org/D47586 Files: include/clang/AST/Decl.h include/clang/Sema/Scope.h lib/Sema/Scope.cpp lib/Sema/SemaDecl.cpp lib/Sema/SemaExpr.cpp lib/Sema/SemaStmt.cpp

[PATCH] D47586: Update NRVO logic to support early return (Attempt 2)

2018-05-31 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik created this revision. Herald added a subscriber: cfe-commits. This is the second attempt of r333500 (Update NRVO logic to support early return). The previous one was reverted for a miscompilation for an incorrect NRVO set up on templates such as: struct Foo {}; template T bar()

[PATCH] D47067: Update NRVO logic to support early return

2018-05-31 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. In https://reviews.llvm.org/D47067#1116733, @rsmith wrote: > Slightly reduced testcase: > > template T f(T u, bool b) { > T t; > if (b) return t; > return u; > } > struct X { X(); X(const X&); ~X(); void *data; }; > > template X f(X, bool); > > > ...

[PATCH] D47067: Update NRVO logic to support early return

2018-05-30 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. In https://reviews.llvm.org/D47067#1116246, @sammccall wrote: > Unfortunately this seems to miscompile, the stage1 built clang is crashing on > the multistage buildbots: > > http://lab.llvm.org:8011/builders/clang-s390x-linux-multistage/builds/2926 > shows this crash

[PATCH] D47067: Update NRVO logic to support early return

2018-05-29 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. In https://reviews.llvm.org/D47067#1115566, @rsmith wrote: > Thank you, do you need someone to commit this for you? No, I recently got the commit access to the repository. Repository: rC Clang https://reviews.llvm.org/D47067

[PATCH] D47067: Update NRVO logic to support early return

2018-05-29 Thread Taiju Tsuiki via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rC333500: Update NRVO logic to support early return (authored by tzik, committed by ). Changed prior to commit: https://reviews.llvm.org/D47067?vs=148603=149035#toc Repository: rC Clang

[PATCH] D47067: Update NRVO logic to support early return

2018-05-25 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added inline comments. Comment at: lib/Sema/Scope.cpp:128 - if (getEntity()) -return; - - if (NRVO.getInt()) -getParent()->setNoNRVO(); - else if (NRVO.getPointer()) -getParent()->addNRVOCandidate(NRVO.getPointer()); + if (getParent()) +

[PATCH] D47067: Update NRVO logic to support early return

2018-05-25 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 148603. tzik added a comment. reuse getParent() result Repository: rC Clang https://reviews.llvm.org/D47067 Files: include/clang/AST/Decl.h include/clang/Sema/Scope.h lib/Sema/Scope.cpp lib/Sema/SemaDecl.cpp lib/Sema/SemaExpr.cpp

[PATCH] D47067: Update NRVO logic to support early return

2018-05-25 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added inline comments. Comment at: lib/Sema/Scope.cpp:122-123 +void Scope::setNRVOCandidate(VarDecl *Candidate) { + for (auto* D : DeclsInScope) { +VarDecl* VD = dyn_cast_or_null(D); +if (VD && VD != Candidate && VD->isNRVOCandidate()) rsmith

[PATCH] D47067: Update NRVO logic to support early return

2018-05-25 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 148570. tzik marked 2 inline comments as done. tzik added a comment. style fix. -O0 IR test. Repository: rC Clang https://reviews.llvm.org/D47067 Files: include/clang/AST/Decl.h include/clang/Sema/Scope.h lib/Sema/Scope.cpp lib/Sema/SemaDecl.cpp

[PATCH] D47067: Update NRVO logic to support early return

2018-05-24 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added inline comments. Comment at: lib/Sema/SemaDecl.cpp:12760 // to deduce an implicit return type. - if (FD->getReturnType()->isRecordType() && - (!getLangOpts().CPlusPlus || !FD->isDependentContext())) + if (!FD->getReturnType()->isScalarType())

[PATCH] D47067: Update NRVO logic to support early return

2018-05-24 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 148417. tzik added a comment. Add AST test. computeNRVO unconditionally. Repository: rC Clang https://reviews.llvm.org/D47067 Files: include/clang/AST/Decl.h include/clang/Sema/Scope.h lib/Sema/Scope.cpp lib/Sema/SemaDecl.cpp

[PATCH] D47067: Update NRVO logic to support early return

2018-05-22 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added inline comments. Comment at: lib/Sema/SemaDecl.cpp:12760 // to deduce an implicit return type. - if (FD->getReturnType()->isRecordType() && - (!getLangOpts().CPlusPlus || !FD->isDependentContext())) + if (!FD->getReturnType()->isScalarType())

[PATCH] D47067: Update NRVO logic to support early return

2018-05-18 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik created this revision. Herald added a subscriber: cfe-commits. The previous implementation misses an opportunity to apply NRVO (Named Return Value Optimization) below. That discourages user to write early return code. --

[PATCH] D46929: Fix a mangling failure on clang-cl C++17

2018-05-17 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. In https://reviews.llvm.org/D46929#1101780, @rnk wrote: > I searched around, and I noticed that `VTableContext::getMethodVTableIndex` > has the same implied contract that the caller must always provide a canonical > declaration or things will break. It looks like it has

[PATCH] D46929: Fix a mangling failure on clang-cl C++17

2018-05-16 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 147244. Repository: rC Clang https://reviews.llvm.org/D46929 Files: lib/AST/VTableBuilder.cpp lib/CodeGen/CGCXX.cpp lib/CodeGen/ItaniumCXXABI.cpp lib/CodeGen/MicrosoftCXXABI.cpp test/CodeGenCXX/PR37481.cpp Index: test/CodeGenCXX/PR37481.cpp

[PATCH] D46820: Fix __uuidof handling on non-type template parameter in C++17

2018-05-16 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik marked an inline comment as done. tzik added inline comments. Comment at: test/SemaCXX/PR24986.cpp:12 + f<&__uuidof(0)>(); +} thakis wrote: > Maybe this test could be in test/SemaCXX/ms-uuid.cpp instead? OK, moved there. Repository: rC Clang

[PATCH] D46820: Fix __uuidof handling on non-type template parameter in C++17

2018-05-16 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 147238. Repository: rC Clang https://reviews.llvm.org/D46820 Files: lib/Sema/SemaTemplate.cpp test/SemaCXX/ms-uuid.cpp Index: test/SemaCXX/ms-uuid.cpp === --- test/SemaCXX/ms-uuid.cpp +++

[PATCH] D46820: Fix __uuidof handling on non-type template parameter in C++17

2018-05-16 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. rsmith: Could you PTAL to this? Repository: rC Clang https://reviews.llvm.org/D46820 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D46929: Fix a mangling failure on clang-cl C++17

2018-05-16 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik created this revision. tzik added reviewers: majnemer, rnk. Herald added a subscriber: cfe-commits. MethodVFTableLocations in MigrosoftVTableContext contains canonicalized decl. But, it's sometimes asked to lookup for non-canonicalized decl, and that causes assertion failure, and compilation

[PATCH] D46820: Fix __uuidof handling on non-type template parameter in C++17

2018-05-14 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik created this revision. tzik added reviewers: rsmith, thakis. Herald added a subscriber: cfe-commits. Clang used to pass the base lvalue of a non-type template parameter to the template instantiation phase when the base part is __uuidof and it's running in C++17 mode. However, that drops its

[PATCH] D46385: Fix test failure for missing _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS

2018-05-03 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik created this revision. tzik added a reviewer: thakis. Herald added subscribers: cfe-commits, christof. This is a follow-up change to r331150. The CL moved the macro from individual file to build file, but the macro is missed in a test config file. Repository: rCXXA libc++abi

[PATCH] D46056: Move _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS macro to build system

2018-04-29 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. rsmith: Thanks! I don't have the commit access to the repository. Could you submit this for me? Repository: rCXXA libc++abi https://reviews.llvm.org/D46056 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[PATCH] D46056: Move _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS macro to build system

2018-04-25 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. rsmith: Could you PTAL to this? This is an attempt to resolve https://bugs.llvm.org/show_bug.cgi?id=34103. Though we already have a way to bring back std::unexpected to libc++abi, we currently don't apply it properly, IMO. Repository: rCXXA libc++abi

[PATCH] D46056: Move _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS macro to build system

2018-04-25 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik created this revision. tzik added reviewers: rsmith, thakis. Herald added subscribers: cfe-commits, mgorny. _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS is currently used to bring back std::unexpected, which is removed in C++17, but still needed for libc++abi for backward compatibility.

[PATCH] D33875: PR27037: Use correct CVR qualifier on an upcast on method pointer call

2017-06-06 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik marked an inline comment as done. tzik added a comment. In https://reviews.llvm.org/D33875#774293, @rsmith wrote: > Looks good to me, thanks! Do you need someone to commit this for you? Yes, could you commit this? https://reviews.llvm.org/D33875

[PATCH] D33875: PR27037: Use correct CVR qualifier on an upcast on method pointer call

2017-06-06 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik marked an inline comment as done. tzik added inline comments. Comment at: lib/Sema/SemaExprCXX.cpp:5108 QualType UseType = isIndirect ? Context.getPointerType(Class) : Class; +UseType = UseType.withCVRQualifiers(LHS.get()->getType().getCVRQualifiers());

[PATCH] D33875: PR27037: Use correct CVR qualifier on an upcast on method pointer call

2017-06-06 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik updated this revision to Diff 101536. tzik added a comment. Cover indirect case and non-CVR qualifiers https://reviews.llvm.org/D33875 Files: lib/Sema/SemaExprCXX.cpp test/SemaCXX/PR27037.cpp Index: test/SemaCXX/PR27037.cpp

[PATCH] D33875: PR27037: Use correct CVR qualifier on an upcast on method pointer call

2017-06-05 Thread Taiju Tsuiki via Phabricator via cfe-commits
tzik added a comment. Hi, Richard. Could you PTAL to this? https://reviews.llvm.org/D33875 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits