<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;color:#000000;"><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">Hi LLVMdevs,</div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">I am trying to get the runtime values of variables (parameters and local variables) in a function running in JIT mode. </div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif" size="4"><span class="Apple-style-span" style="font-size: 12pt;">I generated intrinsic calls
 to obtain the values of some variables as shown in the definition below.  </span></font></div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><div>define void @foo(i32 %arg1) {</div><div>entry:</div><div>  %X = alloca i32, !dbg !3</div><div>  store i32 21, i32* %X, !dbg !3</div><div>  %Y = alloca i32, !dbg !3</div><div>  store i32 22, i32* %Y, !dbg !3</div><div>  call void @llvm.dbg.value(metadata !{i32 %arg1}, i64 0, metadata !5), !dbg !7</div><div>  call void @llvm.dbg.value(metadata !{i32* %X}, i64 0, metadata !8), !dbg !7</div><div>  call void @llvm.dbg.value(metadata !{i32* %Y}, i64 0, metadata !10), !dbg !7</div><div>  %Z = alloca i32, !dbg !3</div><div>  store i32 23, i32*
 %Z, !dbg !3</div><div>  %0 = load i32* %X, !dbg !3</div><div>  store i32 %0, i32* %Z, !dbg !3</div><div>  %1 = load i32* %Y, !dbg !11</div><div>  store i32 %1, i32* %X, !dbg !11</div><div>  %2 = add i32 %0, %1, !dbg !12</div><div>  store i32 %2, i32* %X, !dbg !12</div><div>  %3 = load i32* %X, !dbg !13</div><div>  call void @intDisp(i32 %3), !dbg !13</div><div>  ret void, !dbg !13</div><div>}</div></div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div style="font-family: 'Times New Roman'; font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif" size="4"><span class="Apple-style-span" style="font-size: 12pt; ">However, running the function generates an
 error "</span></font><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">UNREACHABLE executed!</font></div><div style="font-family: 'Times New Roman'; font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">Stack dump:</font></div><div style="font-family: 'Times New Roman'; font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">0.<span class="Apple-tab-span" style="white-space: pre; ">   </span>Running pass 'X86 Machine Code Emitter' on function '@foo'</font></div><div style="font-family: 'Times New Roman'; font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">Aborted" . Could you please  help resolve the problem. I guess I may be doing the wrong thing somewhere.</font></div><div style="font-family: 'Times New Roman';
 font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif"><br></font></div><div style="font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">The assembly code generated for the function is:</font></div><div style="font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif"><br></font></div><div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">BB#0: derived from LLVM BB %entry</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">    </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">%RSP<def> = SUB64ri8 %RSP, 24, %EFLAGS<imp-def,dead>;
 dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">  </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">PROLOG_LABEL <MCSym=.Ltmp0>; dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">  </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">DBG_VALUE %EDI, 0, !"arg1"; dbg:l8.cpp:3:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">       </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">MOV32mi %RSP, 1, %reg0, 20, %reg0, 21; mem:ST4[%X] dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span"
 style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">      </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">MOV32mi %RSP, 1, %reg0, 16, %reg0, 22; mem:ST4[%Y] dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">  </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">MOV32mi %RSP, 1, %reg0, 12, %reg0, 23; mem:ST4[%Z] dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">  </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">%EDI<def> = MOV32rm %RSP, 1, %reg0, 20, %reg0; mem:LD4[%X] dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span"
 style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">      </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">MOV32mr %RSP, 1, %reg0, 12, %reg0, %EDI; mem:ST4[%Z] dbg:l8.cpp:1:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">        </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">%EAX<def> = MOV32rm %RSP, 1, %reg0, 16, %reg0; mem:LD4[%Y] dbg:l8.cpp:5:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">    </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">MOV32mr %RSP, 1, %reg0, 20, %reg0, %EAX; mem:ST4[%X] dbg:l8.cpp:5:1</font></div><div><span class="Apple-tab-span"
 style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">      </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">%EDI<def> = ADD32rr %EDI, %EAX<kill>, %EFLAGS<imp-def,dead>; dbg:l8.cpp:6:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">      </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">MOV32mr %RSP, 1, %reg0, 20, %reg0, %EDI; mem:ST4[%X] dbg:l8.cpp:6:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">        </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">%RAX<def> = MOV64ri <ga:@intDisp>; dbg:l8.cpp:7:1</font></div><div><span
 class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">     </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">CALL64r %RAX<kill>, %EDI<kill>, %RAX<imp-def,dead>, %RDI<imp-def,dead>, %RSP<imp-use>, ...; dbg:l8.cpp:7:1</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">   </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">%RSP<def> = ADD64ri8 %RSP, 24, %EFLAGS<imp-def,dead>; dbg:l8.cpp:7:1</font></div><div><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">        </font></span><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">RET;
 dbg:l8.cpp:7:1</font></div></div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif"><br></font></div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">My other questions are:</font></div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif"><br></font></div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">1. What is the correct way to obtain the runtime values of variables in an abstract form after register allocation?</font></div><div><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">2. I would like to prevent the generation of the </font><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; ">DBG_VALUE instruction but still be able to obtain the value (e.g.,  </span><span class="Apple-style-span" style="font-family: 'times new
 roman', 'new york', times, serif; ">%EDI above) by saving the register code/name?</span></div><div><span class="Apple-style-span" style="font-family: 'times new roman', 'new york', times, serif; ">3. I would like to generate a label and take its address.</span></div><div style="font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif"><br></font></div></div><div style="font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">Thank  for your help.</font></div><div style="font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif"><br></font></div><div style="font-size: medium; color: rgb(0, 0, 0); "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">Best regards,</font></div><div style="font-size: medium; color: rgb(0, 0, 0);
 "><font class="Apple-style-span" face="'times new roman', 'new york', times, serif">Nurudeen.</font></div><div style="position: fixed; color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "></div>


</div></body></html>