diff options
author | Zequan Wu <zequanwu@google.com> | 2021-09-29 15:00:39 -0700 |
---|---|---|
committer | Zequan Wu <zequanwu@google.com> | 2021-09-30 11:24:18 -0700 |
commit | dbaa40833693e79a8fcbea6435eb3b0becfd67ad (patch) | |
tree | d04f7e71c5cce85e3d9880e832312766907444cd /clang/lib/Sema/SemaInit.cpp | |
parent | fa32fd3bf7c070e62487e5ccba00557d57b2ee5c (diff) | |
download | llvm-dbaa40833693e79a8fcbea6435eb3b0becfd67ad.zip llvm-dbaa40833693e79a8fcbea6435eb3b0becfd67ad.tar.gz llvm-dbaa40833693e79a8fcbea6435eb3b0becfd67ad.tar.bz2 |
[clang] do not emit note for bad conversion when destination type qualifiers are not compatibly include source type qualifiers
llvm.org/PR52014
Differential Revision: https://reviews.llvm.org/D110780
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 4056308..efbdd18 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -8914,12 +8914,16 @@ static void emitBadConversionNotes(Sema &S, const InitializedEntity &entity, S.EmitRelatedResultTypeNoteForReturn(destType); } QualType fromType = op->getType(); - auto *fromDecl = fromType.getTypePtr()->getPointeeCXXRecordDecl(); - auto *destDecl = destType.getTypePtr()->getPointeeCXXRecordDecl(); + QualType fromPointeeType = fromType.getCanonicalType()->getPointeeType(); + QualType destPointeeType = destType.getCanonicalType()->getPointeeType(); + auto *fromDecl = fromType->getPointeeCXXRecordDecl(); + auto *destDecl = destType->getPointeeCXXRecordDecl(); if (fromDecl && destDecl && fromDecl->getDeclKind() == Decl::CXXRecord && destDecl->getDeclKind() == Decl::CXXRecord && !fromDecl->isInvalidDecl() && !destDecl->isInvalidDecl() && - !fromDecl->hasDefinition()) + !fromDecl->hasDefinition() && + destPointeeType.getQualifiers().compatiblyIncludes( + fromPointeeType.getQualifiers())) S.Diag(fromDecl->getLocation(), diag::note_forward_class_conversion) << S.getASTContext().getTagDeclType(fromDecl) << S.getASTContext().getTagDeclType(destDecl); |