<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Hello Arushi,<br><br>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.  <span>See <a target="_blank" href="http://llvm.org/docs/LangRef.html#datalayout">http://llvm.org/docs/LangRef.html#datalayout</a> for details.</span><br></div><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font face="Tahoma" size="2"><b><span style="font-weight: bold;">From:</span></b> Arushi Aggarwal <arushi987@gmail.com><br><b><span style="font-weight: bold;">To:</span></b> LLVM Dev
 <llvmdev@cs.uiuc.edu><br><b><span style="font-weight: bold;">Sent:</span></b> Mon, March 8, 2010 6:51:58 PM<br><b><span style="font-weight: bold;">Subject:</span></b> [LLVMdev] Alignment for Alloca Inst in llvm 2.6<br></font><br>
<meta http-equiv="x-dns-prefetch-control" content="off">Hi,<br><br>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).<br>

<br>define i32 @main(i32 %argc, i8** %argv) nounwind {<br>entry:<br>  %argc_addr = alloca i32                         ; <i32*> [#uses=1]<br>  %argv_addr = alloca i8**                        ; <i8***> [#uses=2]<br>

  %retval = alloca i32                            ; <i32*> [#uses=1]<br>  %a = alloca [100 x i32], align 512              ; <[100 x i32]*> [#uses=2]<br>  %0 = call i8* @handle_args(i32 %argc, i8** %argv) ; <i8*> [#uses=1]<br>

  %argv_temp = bitcast i8* %0 to i8**             ; <i8**> [#uses=1]<br><br>define i32 @main(i32 %argc, i8** %argv) nounwind {<br>entry:<br>  %argc_addr = alloca i32                         ; <i32*> [#uses=1]<br>

  %argv_addr = alloca i8**                        ; <i8***> [#uses=2]<br>  %retval = alloca i32                            ; <i32*> [#uses=1]<br>  %0 = call i8* @handle_args(i32 %argc, i8** %argv) ; <i8*> [#uses=1]<br>

  %argv_temp = bitcast i8* %0 to i8**             ; <i8**> [#uses=1]<br>  %a = alloca [100 x i32], align 512              ; <[100 x i32]*> [#uses=2]<br>  <br><div><br></div><div>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?</div>

<div><br></div><div>Thanks in advance</div><div><br></div><div>Arushi</div>
<meta http-equiv="x-dns-prefetch-control" content="on"></div></div></blockquote>
</div><br>



      </body></html>