Use the dereferenceable attribute on C99 array parameters with static
authorHal Finkel <hfinkel@anl.gov>
Sat, 19 Jul 2014 01:41:07 +0000 (01:41 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sat, 19 Jul 2014 01:41:07 +0000 (01:41 +0000)
commit48d53e2c4c9131766e61fb52c7876fbcf9859463
tree82adc871289f565e71d1207baa8f3e278664ae47
parent1b98ccc4e9576e86fb3e235bac3076472a84f875
Use the dereferenceable attribute on C99 array parameters with static

In C99, an array parameter declarator might have the form:
  direct-declarator '[' 'static' type-qual-list[opt] assign-expr ']'

where the static keyword indicates that the caller will always provide a
pointer to the beginning of an array with at least the number of elements
specified by the assignment expression. For constant sizes, we can use the
new dereferenceable attribute to pass this information to the optimizer. For
VLAs, we don't know the size, but (for addrspace(0)) do know that the pointer
must be nonnull (and so we can use the nonnull attribute).

llvm-svn: 213444
clang/lib/CodeGen/CGCall.cpp
clang/test/CodeGen/vla.c