diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-22 19:00:43 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-12-06 16:30:02 +0000 |
commit | 5f7ddb1456d5b926e85710da690bf548ef0c9fc8 (patch) | |
tree | f8845b108c5c07836b95c8229c96cd745fc9fb2c /contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp | |
parent | 3f82687cdf02983d8f3294df4d97b09cf211141b (diff) | |
download | src-5f7ddb1456d5b926e85710da690bf548ef0c9fc8.tar.gz src-5f7ddb1456d5b926e85710da690bf548ef0c9fc8.zip |
Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvmorg-13-init-16847-g88e66fa60ae5, the last commit before
the upstream release/13.x branch was created.
PR: 258209
(cherry picked from commit fe6060f10f634930ff71b7c50291ddc610da2475)
Diffstat (limited to 'contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp b/contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp index f5afcb76fc96..af2aa49c0103 100644 --- a/contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp +++ b/contrib/llvm-project/clang/lib/Sema/SemaExprMember.cpp @@ -338,13 +338,12 @@ CheckExtVectorComponent(Sema &S, QualType baseType, ExprValueKind &VK, compStr++; } while (*compStr && (Idx = vecType->getPointAccessorIdx(*compStr)) != -1); - // Emit a warning if an rgba selector is used earlier than OpenCL 2.2 + // Emit a warning if an rgba selector is used earlier than OpenCL C 3.0. if (HasRGBA || (*compStr && IsRGBA(*compStr))) { - if (S.getLangOpts().OpenCL && S.getLangOpts().OpenCLVersion < 220) { + if (S.getLangOpts().OpenCL && S.getLangOpts().OpenCLVersion < 300) { const char *DiagBegin = HasRGBA ? CompName->getNameStart() : compStr; S.Diag(OpLoc, diag::ext_opencl_ext_vector_type_rgba_selector) - << StringRef(DiagBegin, 1) - << S.getLangOpts().OpenCLVersion << SourceRange(CompLoc); + << StringRef(DiagBegin, 1) << SourceRange(CompLoc); } } } else { @@ -409,7 +408,8 @@ CheckExtVectorComponent(Sema &S, QualType baseType, ExprValueKind &VK, if (CompSize == 1) return vecType->getElementType(); - if (HasRepeated) VK = VK_RValue; + if (HasRepeated) + VK = VK_PRValue; QualType VT = S.Context.getExtVectorType(vecType->getElementType(), CompSize); // Now look up the TypeDefDecl from the vector type. Without this, @@ -761,7 +761,7 @@ Sema::BuildMemberReferenceExpr(Expr *Base, QualType BaseType, if (!Base) { TypoExpr *TE = nullptr; QualType RecordTy = BaseType; - if (IsArrow) RecordTy = RecordTy->getAs<PointerType>()->getPointeeType(); + if (IsArrow) RecordTy = RecordTy->castAs<PointerType>()->getPointeeType(); if (LookupMemberExprInRecord( *this, R, nullptr, RecordTy->getAs<RecordType>(), OpLoc, IsArrow, SS, TemplateArgs != nullptr, TemplateKWLoc, TE)) @@ -910,7 +910,8 @@ MemberExpr *Sema::BuildMemberExpr( bool HadMultipleCandidates, const DeclarationNameInfo &MemberNameInfo, QualType Ty, ExprValueKind VK, ExprObjectKind OK, const TemplateArgumentListInfo *TemplateArgs) { - assert((!IsArrow || Base->isRValue()) && "-> base must be a pointer rvalue"); + assert((!IsArrow || Base->isPRValue()) && + "-> base must be a pointer prvalue"); MemberExpr *E = MemberExpr::Create(Context, Base, IsArrow, OpLoc, NNS, TemplateKWLoc, Member, FoundDecl, MemberNameInfo, TemplateArgs, Ty, @@ -964,14 +965,13 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, // C++1z [expr.ref]p2: // For the first option (dot) the first expression shall be a glvalue [...] - if (!IsArrow && BaseExpr && BaseExpr->isRValue()) { + if (!IsArrow && BaseExpr && BaseExpr->isPRValue()) { ExprResult Converted = TemporaryMaterializationConversion(BaseExpr); if (Converted.isInvalid()) return ExprError(); BaseExpr = Converted.get(); } - const DeclarationNameInfo &MemberNameInfo = R.getLookupNameInfo(); DeclarationName MemberName = MemberNameInfo.getName(); SourceLocation MemberLoc = MemberNameInfo.getLoc(); @@ -1119,7 +1119,7 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, ExprValueKind valueKind; QualType type; if (MemberFn->isInstance()) { - valueKind = VK_RValue; + valueKind = VK_PRValue; type = Context.BoundMemberTy; } else { valueKind = VK_LValue; @@ -1135,7 +1135,7 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, if (EnumConstantDecl *Enum = dyn_cast<EnumConstantDecl>(MemberDecl)) { return BuildMemberExpr(BaseExpr, IsArrow, OpLoc, &SS, TemplateKWLoc, Enum, FoundDecl, /*HadMultipleCandidates=*/false, - MemberNameInfo, Enum->getType(), VK_RValue, + MemberNameInfo, Enum->getType(), VK_PRValue, OK_Ordinary); } @@ -1779,9 +1779,9 @@ Sema::BuildFieldReferenceExpr(Expr *BaseExpr, bool IsArrow, if (BaseExpr->getObjectKind() == OK_Ordinary) VK = BaseExpr->getValueKind(); else - VK = VK_RValue; + VK = VK_PRValue; } - if (VK != VK_RValue && Field->isBitField()) + if (VK != VK_PRValue && Field->isBitField()) OK = OK_BitField; // Figure out the type of the member; see C99 6.5.2.3p3, C++ [expr.ref] @@ -1791,7 +1791,7 @@ Sema::BuildFieldReferenceExpr(Expr *BaseExpr, bool IsArrow, VK = VK_LValue; } else { QualType BaseType = BaseExpr->getType(); - if (IsArrow) BaseType = BaseType->getAs<PointerType>()->getPointeeType(); + if (IsArrow) BaseType = BaseType->castAs<PointerType>()->getPointeeType(); Qualifiers BaseQuals = BaseType.getQualifiers(); |