[cfe-dev] Fixed-size argument arrays in LLVM assembly

nkavv at physics.auth.gr nkavv at physics.auth.gr
Wed Feb 13 09:55:46 PST 2013

Hi all,

I've noticed that fixed-size arrays are not always preserved in LLVM  
assembly. This happens in the case of procedure argument arrays. While  
an alloca declares the size of fixed-size local arrays (for instance),  
argument arrays are always accessed as pointers (with getelementptr,  
which is not intuitive for an LLVM n00b).

While C (and other languages that share this approach) does not impose  
any bounds checking, maintaining the sizes may be meaningful for  
certain targets, e.g. non-programmable hardware.

1) Does the in-memory data structures that represent LLVM IR maintain  
argument array sizes? If yes, how is this information accessed? Or is  
it lost in translation?

2) If this is not the case, can the LLVM IR (in principle) cope with  
array arguments without converting them to pointers?

Thank you in advance.

Best regards
Nikolaos Kavvadias

More information about the cfe-dev mailing list