[cfe-dev] -Warray-bounds seems over-zealous on Clang

Peter Geoghegan peter at 2ndquadrant.com
Tue Jul 12 16:17:43 PDT 2011


On 12 July 2011 23:52, Reid Kleckner <reid.kleckner at gmail.com> wrote:
> My inclination and I believe the inclination of others is that, if it
> catches real bugs, which Nico has shown it has, then it's worth having
> the warning.

It's going to cause spurious warnings for a large number of real-world
applications. Do you think that that will endear developers of those
applications to Clang? The fact that it may catch bugs in some
extremely unlikely scenario (recall that I only want to avoid the
warning for this very specific case) should not outweigh this. Isn't
that obvious?

> Another compromise would be to have a flag about bounds
> checks warnings for size 1 arrays at the end of structs (phew).  =P

As I said, I would think it reasonable if the warning was disabled for
this exact pattern only, so that for example it would not occur if the
array had more than 1 element, or wasn't the last piece of data in the
struct.

> If you can't use C99, are flexible arrays available as an extension in
> clang, either in gnu89 or via some flag?  If so, you could use ifdefs
> like this:
>
> #ifdef __GNUC__
> /* or some other condition, __has_feature or what have you */
> #define FLEXIBLE_ARRAY
> #else
> #define FLEXIBLE_ARRAY 1
> #endif
>
> struct Buffer {
>  int len;
>  char bytes[FLEXIBLE_ARRAY];
> };
>
> It's even self-documenting.

It's gross. Our community is obsessed with code hygiene, and that will
never fly just to get Clang to stop complaining while every single
other compiler, of which there are quite a few (PostgreSQL is supposed
to be highly portable), will not complain.

-- 
Peter Geoghegan       http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services




More information about the cfe-dev mailing list