On Tue, 10 Nov 2015, Marek Polacek wrote: > While both C and C++ FEs are able to reject e.g. > int a[__SIZE_MAX__ / sizeof(int)]; > they are accepting code such as > int (*a)[__SIZE_MAX__ / sizeof(int)]; > > As Joseph pointed out, any construction of a non-VLA type whose size is half > or > more of the address space should receive a compile-time error. > > Done by moving up the check for the size in bytes so that it checks check > every > non-VLA complete array type constructed in the course of processing the > declarator. Since the C++ FE had the same problem, I've fixed it up there as > well. And that's why I had to twek dg-error of two C++ tests; if the size of > an array is considered invalid, we give an error message with word "unnamed". > > (I've removed the comment about crashing in tree_to_[su]hwi since that seems > to no longer be the case.) > > Bootstrapped/regtested on x86_64-linux, ok for trunk?
The C front-end changes are OK. -- Joseph S. Myers jos...@codesourcery.com