https://github.com/ahatanak created https://github.com/llvm/llvm-project/pull/68001
This fixes an assertion failure in InitializationSequence::Perform. >From 82f68bfe98ab0bebf6d1c33a09645aaa55326c2b Mon Sep 17 00:00:00 2001 From: Akira Hatanaka <ahatan...@apple.com> Date: Mon, 2 Oct 2023 09:03:00 -0700 Subject: [PATCH] Mark an ObjCIvarDecl as invalid if its type contains errors This fixes an assertion failure in InitializationSequence::Perform. --- clang/lib/Sema/SemaDecl.cpp | 3 +++ clang/test/SemaObjCXX/ivar-struct.mm | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9c2f1e83ed3fbe9..de6023105253f03 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -18622,6 +18622,9 @@ Decl *Sema::ActOnIvar(Scope *S, SourceLocation DeclStart, Declarator &D, ObjCIvarDecl *NewID = ObjCIvarDecl::Create( Context, EnclosingContext, DeclStart, Loc, II, T, TInfo, ac, BitWidth); + if (T->containsErrors()) + NewID->setInvalidDecl(); + if (II) { NamedDecl *PrevDecl = LookupSingleName(S, II, Loc, LookupMemberName, ForVisibleRedeclaration); diff --git a/clang/test/SemaObjCXX/ivar-struct.mm b/clang/test/SemaObjCXX/ivar-struct.mm index c8c9ca9cbbf04f9..4a039a98abea6c1 100644 --- a/clang/test/SemaObjCXX/ivar-struct.mm +++ b/clang/test/SemaObjCXX/ivar-struct.mm @@ -1,8 +1,21 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s -// expected-no-diagnostics +// RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s @interface A { struct X { int x, y; } X; } @end + +static const uint32_t Count = 16; // expected-error {{unknown type name 'uint32_t'}} + +struct S0 { + S0(); +}; + +@interface C0 +@end + +@implementation C0 { + S0 ivar0[Count]; +} +@end _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits