[cfe-dev] Fixed-size argument arrays in LLVM assembly
David Tweed
david.tweed at arm.com
Thu Feb 14 03:44:50 PST 2013
Hi,
| David, your approach offers a way to circumvent the problem from a
| software view (and spilling to a large stack/heap). I guess it will
| work with C99. It might also be directly usable in a JIT setting,
| however, in general, the m argument (size) will not be known at
| compile time.
Note that I was just clarifying John's point about array sizes not being in any way
known in functions taking arrays, pointing out one obscure bit of syntax that means
C does in theory provide a way to express a constraint on arrays. However,
I believe that _all_ it does is mean that if the size isn't met by the actual arguments
then you're in the realm of undefined behaviour. In particular, it's about allowing
a compiler to do things it couldn't validly otherwise do (loading elements out-of-order, etc)
so that a conservative compiler can choose to just ignore it. I'd certainly be hesitant about
relying on anything beyond those semantics.
> then "the value of the corresponding actual argument shall provide access to
> the first element of an array with at least as many elements as specified by
> the size expression".
That quote is from 6.7.5.3 of the C standard, and as far as I can see that's
_all_ the compiler is allowed to infer from it.
Cheers,
Dave
More information about the cfe-dev
mailing list