[LLVMdev] Alignment for Alloca Inst in llvm 2.6

Arushi Aggarwal arushi987 at gmail.com
Mon Mar 8 16:51:58 PST 2010


Hi,

1. Does the alignment of the pointer returned by an AllocaInst depend on the
instructions before it in the basic block? The 1st snippet below aligns 'a'
correctly, while the 2nd one doesnt. (the method handle_args, only prints
out the values of arguments, and returns argv unchanged).

define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
 %argc_addr = alloca i32                         ; <i32*> [#uses=1]
 %argv_addr = alloca i8**                        ; <i8***> [#uses=2]
 %retval = alloca i32                            ; <i32*> [#uses=1]
 %a = alloca [100 x i32], align 512              ; <[100 x i32]*> [#uses=2]
 %0 = call i8* @handle_args(i32 %argc, i8** %argv) ; <i8*> [#uses=1]
 %argv_temp = bitcast i8* %0 to i8**             ; <i8**> [#uses=1]

define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
 %argc_addr = alloca i32                         ; <i32*> [#uses=1]
 %argv_addr = alloca i8**                        ; <i8***> [#uses=2]
 %retval = alloca i32                            ; <i32*> [#uses=1]
 %0 = call i8* @handle_args(i32 %argc, i8** %argv) ; <i8*> [#uses=1]
 %argv_temp = bitcast i8* %0 to i8**             ; <i8**> [#uses=1]
 %a = alloca [100 x i32], align 512              ; <[100 x i32]*> [#uses=2]


2. I notice that the setAlignment method for an AllocaInst takes an
unsigned. For 64 bit systems, alignment could potentially be larger. Is
there a reason why the alignment should be restricted to this size?

Thanks in advance

Arushi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100308/0c620801/attachment.html>


More information about the llvm-dev mailing list