summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRoger Ferrer Ibanez <roger.ferreribanez@arm.com>2017-12-07 09:23:50 +0000
committerRoger Ferrer Ibanez <roger.ferreribanez@arm.com>2017-12-07 09:23:50 +0000
commitd80d6c5a56098efe7dd90e2fea6d49da87724251 (patch)
treeac6b8b57a0ca37bb289c941191e53460168ff7d8 /clang/lib
parentdd62ac49cbc7b4c6e9608f36e48eca7fa474f937 (diff)
downloadbcm5719-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.cpp5
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);
}
}
OpenPOWER on IntegriCloud