forked from OSchip/llvm-project
Don't crash when initializing a subaggregate in C from a property r-value.
llvm-svn: 120899
This commit is contained in:
parent
5a4ce8bf06
commit
211e699754
|
@ -698,6 +698,7 @@ void InitListChecker::CheckSubElementType(const InitializedEntity &Entity,
|
|||
// that of the expression.
|
||||
if ((ElemType->isRecordType() || ElemType->isVectorType()) &&
|
||||
SemaRef.Context.hasSameUnqualifiedType(expr->getType(), ElemType)) {
|
||||
SemaRef.DefaultFunctionArrayLvalueConversion(expr);
|
||||
UpdateStructuredListElement(StructuredList, StructuredIndex, expr);
|
||||
++Index;
|
||||
return;
|
||||
|
|
|
@ -77,3 +77,15 @@ void test2() {
|
|||
// CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
|
||||
test2_helper().dyn *= 10;
|
||||
}
|
||||
|
||||
// Test aggregate initialization from property reads.
|
||||
// Not crashing is good enough for the property-specific test.
|
||||
struct test3_struct { int x,y,z; };
|
||||
struct test3_nested { struct test3_struct t; };
|
||||
@interface test3_object
|
||||
@property struct test3_struct s;
|
||||
@end
|
||||
void test3(test3_object *p) {
|
||||
struct test3_struct array[1] = { p.s };
|
||||
struct test3_nested agg = { p.s };
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue