<div dir="ltr">Hello Everyone,<div><br></div><div>I have general question WRT llvm.dbg.value intrinsic function semantics.</div><div><br></div><div>Under what circumstances should a frontend choose to emit(at -O0(No optimization)) llvm.dbg.value for a local variable.</div><div><br></div><div>I saw some debuginfo code in flang(older one), sort of it choose to emit *llvm.dbg.value* for *every load operation* happening on a *local variable*. And as noted below in IR snippet it has already emitted *llvm.dbg.declare* for the local variable.</div><div><br></div><div>IR snippet of a subprogram from flang -</div><div>-----------</div><div> call void @llvm.dbg.declare(metadata i32* %foo, metadata !9, metadata !DIExpression()), !dbg !11<br></div><div>%0 = load i32, i32* %foo, align 4, !dbg !13<br>  call void @llvm.dbg.value(metadata i32 %0, metadata !9, metadata !DIExpression()), !dbg !11<br></div><div><br></div><div>*Please note here, that IR snippet is generated by flang(at -O0),  so no clang/llvm intervention happening till this point. After this llvm takes over this IR for final target code generation.</div><div><br></div><div>Can anybody provide some clarity WRT this.</div><div><br></div><div>Thanks a lot!</div><div>Sourabh Singh Tomar</div></div>