[LLVMdev] Alignment for Alloca Inst in llvm 2.6
Samuel Crow
samuraileumas at yahoo.com
Mon Mar 8 19:10:12 PST 2010
Hello Arushi,
Are those listings your entire LLVM Assembly source? If so, you need to use a target datalayout if you have special alignment considerations on your platform. See http://llvm.org/docs/LangRef.html#datalayout for details.
>
>From: Arushi Aggarwal <arushi987 at gmail.com>
>To: LLVM Dev <llvmdev at cs.uiuc.edu>
>Sent: Mon, March 8, 2010 6:51:58 PM
>Subject: [LLVMdev] Alignment for Alloca Inst in llvm 2.6
>
>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/d7e28c45/attachment.html>
More information about the llvm-dev
mailing list