diff options
author | Roger Ferrer Ibanez <roger.ferreribanez@arm.com> | 2017-12-07 09:23:50 +0000 |
---|---|---|
committer | Roger Ferrer Ibanez <roger.ferreribanez@arm.com> | 2017-12-07 09:23:50 +0000 |
commit | d80d6c5a56098efe7dd90e2fea6d49da87724251 (patch) | |
tree | ac6b8b57a0ca37bb289c941191e53460168ff7d8 /clang/lib | |
parent | dd62ac49cbc7b4c6e9608f36e48eca7fa474f937 (diff) | |
download | bcm5719-llvm-d80d6c5a56098efe7dd90e2fea6d49da87724251.tar.gz bcm5719-llvm-d80d6c5a56098efe7dd90e2fea6d49da87724251.zip |
Ignore pointers to incomplete types when diagnosing misaligned addresses
This is a fix for PR35509 in which we crash because we attempt to compute the
alignment of an incomplete type.
Differential Revision: https://reviews.llvm.org/D40895
llvm-svn: 320017
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index cdf162da6d1..6dec8d17301 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -12399,8 +12399,9 @@ void Sema::DiscardMisalignedMemberAddress(const Type *T, Expr *E) { MisalignedMember(Op)); if (MA != MisalignedMembers.end() && (T->isIntegerType() || - (T->isPointerType() && - Context.getTypeAlignInChars(T->getPointeeType()) <= MA->Alignment))) + (T->isPointerType() && (T->getPointeeType()->isIncompleteType() || + Context.getTypeAlignInChars( + T->getPointeeType()) <= MA->Alignment)))) MisalignedMembers.erase(MA); } } |