<div dir="ltr"><div>Hi all,</div><div><br></div><div>I'm trying to generate IR with debug option (-g) for the following code snippet. <br></div><div><br></div><div>int func(int i) {<br>        return i+1;<br>}</div><div><br></div><div>The corresponding IR for the function definition is:</div><div><br></div><div>define i32 @func(i32 %i) #0 !dbg !7 {<br>entry:<br>  %i.addr = alloca i32, align 4<br>  store i32 %i, i32* %i.addr, align 4<br>  call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !11, metadata !12), !dbg !13<br>  %0 = load i32, i32* %i.addr, align 4, !dbg !14<br>  %add = add nsw i32 %0, 1, !dbg !15<br>  ret i32 %add, !dbg !16<br>}</div><div><br></div><div>I'm confused about  why the "<i>call void @llvm.dbg.declare(metadata i32* %i.addr, metadata !11, metadata !12), !dbg !13</i>" appears after an usage of <i>%i.addr</i> (<i>store i32 %i, i32* %i.addr, align 4</i>)<i>. </i>Should the use of<i> %i.addr</i> happen after llvm.dbg.declare or does it have any specific reason for this? Am I missing something here?</div><div><br></div><div>Thank you very much,</div><div>Akash Banerjee<br></div><div><i></i></div></div>