aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorZequan Wu <zequanwu@google.com>2021-09-29 15:00:39 -0700
committerZequan Wu <zequanwu@google.com>2021-09-30 11:24:18 -0700
commitdbaa40833693e79a8fcbea6435eb3b0becfd67ad (patch)
treed04f7e71c5cce85e3d9880e832312766907444cd /clang/lib/Sema/SemaInit.cpp
parentfa32fd3bf7c070e62487e5ccba00557d57b2ee5c (diff)
downloadllvm-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.cpp10
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);