diff options
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 5cf718cb6d25..3138ec3b1c77 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -4641,6 +4641,13 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, From->getType()->getPointeeType().getAddressSpace()) CK = CK_AddressSpaceConversion; + if (!isCast(CCK) && + !ToType->getPointeeType().getQualifiers().hasUnaligned() && + From->getType()->getPointeeType().getQualifiers().hasUnaligned()) { + Diag(From->getBeginLoc(), diag::warn_imp_cast_drops_unaligned) + << InitialFromType << ToType; + } + From = ImpCastExprToType(From, ToType.getNonLValueExprType(Context), CK, VK, /*BasePath=*/nullptr, CCK) .get(); |