[cfe-dev] -Warray-bounds seems over-zealous on Clang
Peter Geoghegan
peter at 2ndquadrant.com
Tue Jul 12 07:46:06 PDT 2011
Hello,
Consider the common idiom in C, of a struct with its last declared
type is an array like this:
typedef struct
{
int id;
int values[1];
} my_struct;
This will be stored in dynamically allocated memory. Memory will be
allocated for my_struct, in addition to however many additional
integers must be stored. Despite how frequently this is seen, Clang
doesn't seem to like this. In particular, it over-zealously complains
about assigning past the end of "values" when that can be statically
determined (because an int rvalue is used), when the -Warray flag is
given. GCC, on the other hand, does not. This is of particular concern
when hacking on the PostgreSQL code, that makes extensive use of this
idiom:
/home/peter/build/Release/bin/clang -O2 -Wall -Wmissing-prototypes
-Wpointer-arith -Wdeclaration-after-statement -Wendif-labels
-Wformat-security -fno-strict-aliasing -fwrapv -I../../../src/include
-D_GNU_SOURCE -c -o namespace.o namespace.c
namespace.c:1497:29: warning: array index of '1' indexes past the end
of an array (that contains 1 elements) [-Warray-bounds]
operform->oprright ==
resultList->args[1])
^ ~
../../../src/include/catalog/namespace.h:37:2: note: array 'args' declared here
Oid args[1]; /* arg types
--- VARIABLE LENGTH ARRAY */
^
namespace.c:1509:30: warning: array index of '1' indexes past the end
of an array (that contains 1 elements) [-Warray-bounds]
operform->oprright == prevResult->args[1])
^ ~
../../../src/include/catalog/namespace.h:37:2: note: array 'args' declared here
Oid args[1]; /* arg types
--- VARIABLE LENGTH ARRAY */
^
namespace.c:1540:3: warning: array index of '1' indexes past the end
of an array (that contains 1 elements) [-Warray-bounds]
newResult->args[1] = operform->oprright;
^ ~
../../../src/include/catalog/namespace.h:37:2: note: array 'args' declared here
Oid args[1]; /* arg types
--- VARIABLE LENGTH ARRAY */
^
This seems like a bug to me. What's the consensus view on this?
--
Peter Geoghegan http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services
More information about the cfe-dev
mailing list