llvm-project/clang/test/SemaObjC/variable-size-ivar.m
Erik Pilkington 090dd647d9 [Sema] Fold VLAs to constant arrays in a few more contexts
552c6c2 removed support for promoting VLAs to constant arrays when the bounds
isn't an ICE, since this can result in miscompiling a conforming program that
assumes that the array is a VLA. Promoting VLAs for fields is still supported,
since clang doesn't support VLAs in fields, so no conforming program could have
a field VLA.

This change is really disruptive, so this commit carves out two more cases
where we promote VLAs which can't miscompile a conforming program:

 - When the VLA appears in an ivar -- this seems like a corollary to the field thing
 - When the VLA has an initializer -- VLAs can't have an initializer

Differential revision: https://reviews.llvm.org/D90871
2020-12-04 10:03:23 -05:00

13 lines
344 B
Objective-C

// RUN: %clang_cc1 -fsyntax-only %s -verify
const int ksize = 42;
int size = 42;
@interface X
{
int arr1[ksize]; // expected-warning{{variable length array folded to constant array}}
int arr2[size]; // expected-error{{instance variables must have a constant size}}
int arr3[ksize-43]; // expected-error{{array size is negative}}
}
@end