[cfe-dev] "static" array type derivation
John McCall
rjmccall at apple.com
Thu Apr 19 14:37:10 PDT 2012
On Apr 19, 2012, at 5:34 AM, Tim Northover wrote:
> On Thursday 19 Apr 2012 00:09:58 Russell Harmon wrote:
>> In the C standard section 6.7.5 point 7, it is stated that I can specify a
>> type qualifier of "static" within the [ and ] of a function argument, the
>> array provided upon every invocation of that function will be at least the
>> size specified. I take this to mean that I can provide a minimum size
>> (implying non-null) for a function argument, but my test code here
>> https://gist.github.com/2417153 seems to indicate that although accepted,
>> there is no enforcement of this in clang. Is my interpretation of the C
>> standard correct?
>
> I believe so. The code you posted violates a "shall" clause, so it's undefined
> behaviour. However it doesn't violate any constraints clauses and it's
> syntactically correct so the compiler isn't required by the standard to
> produce a diagnostic -- it's just permitted to optimise as if you obeyed the
> rules.
>
> It is, of course, a quality of implementation issue and warning about this
> would be better.
>
>> If so, is there plans to add some (limited) compile-time checking of this?
>
> I'm afraid I don't know of anyone planning to implement that warning, but I
> expect the standard comment that a patch would be good applies.
Yep. It would need to be implemented in a very performance-neutral way,
because I'm not sure I've ever seen an actual 'static' annotation in real code.
John.
More information about the cfe-dev
mailing list