mizvekov added inline comments.
================ Comment at: clang/lib/Sema/SemaStmt.cpp:3095 - // ...non-volatile... - if (VD->getType().isVolatileQualified()) - return false; - - // C++20 [class.copy.elision]p3: - // ...rvalue reference to a non-volatile... - if (VD->getType()->isRValueReferenceType() && - (!(CESK & CES_AllowRValueReferenceType) || - VD->getType().getNonReferenceType().isVolatileQualified())) + if (VD->getType()->isObjectType()) { + // C++17 [class.copy.elision]p3: ---------------- mizvekov wrote: > A drive by fix here would be that we already have a VDType in this context, > might as well use it even though original for some reason missed it in this > part. This whole block is also logically equivalent to the much simpler: ``` if (VDType.isReferenceType()) { if (!(CESK & CES_AllowRValueReferenceType) || !VDType.isRValueReferenceType()) return false; VDType = VDType.getNonReferenceType() } if (!VDType.isObjectType() || VDType.isVolatileQualified()) return false; ``` But you do have to adjust the comments there and adjust the rest to use VDType consistently :) Also, I think it might be possible to even remove the `!VDType.isObjectType() || ` part from my suggestion above, because it might be the only option left if it is not a reference anyway. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98971/new/ https://reviews.llvm.org/D98971 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits