This crash was reported in https://bugs.llvm.org//show_bug.cgi?id=31173
Differential Revision: https://reviews.llvm.org/D28297
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295545
91177308-0d34-0410-b5e6-
96231b3b80d8
if (!VD || VD->getType()->isReferenceType())
return true;
+ // Don't warn when target type has no definition.
+ if (const RecordType *RD = dyn_cast<RecordType>(ToPointeeTy.getTypePtr())) {
+ if (!RD->getDecl()->getDefinition()) {
+ return true;
+ }
+ }
+
// Warn when there is widening cast.
unsigned ToWidth = Ctx.getTypeInfo(ToPointeeTy).Width;
unsigned OrigWidth = Ctx.getTypeInfo(OrigPointeeTy).Width;
void *VP = P;
Abc = (struct ABC *)VP;
}
+
+// https://llvm.org/bugs/show_bug.cgi?id=31173
+void dontCrash(struct AB X) {
+ struct UndefS *S = (struct UndefS *)&X;
+}