This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [C/C++ PATCH] Reject declarators with huge arrays (PR c/68107, c++/68266)
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Marek Polacek <polacek at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jason Merrill <jason at redhat dot com>, Martin Sebor <msebor at redhat dot com>
- Date: Tue, 10 Nov 2015 18:02:14 +0000
- Subject: Re: [C/C++ PATCH] Reject declarators with huge arrays (PR c/68107, c++/68266)
- Authentication-results: sourceware.org; auth=none
- References: <20151110163623 dot GB3185 at redhat dot com>
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
joseph@codesourcery.com