<div dir="ltr"><div>Hello, everyone,</div><div><br></div><div>I encounter a strange problem about llvm type i64 and C++ type int64_t.</div><div><br></div><div>I instrumented a program to call the function 'myFunction' in the C++ shared library. 'myFunction' is something like this:</div><div><br></div><div>int64_t myFunction() {</div><div>     int64_t retValue;</div><div>     ...</div><div>     std::cout << "retValue: " << retValue << "\n";</div><div>     return retValue;</div><div>}</div><div><br></div><div><div>The call instruction in llvm bytecode is something like this:</div><div><br></div><div>%0 = call i64 myFunction();</div></div><div><br></div><div>However, I found retValue in 'myFunction' have a different value with %0. For exmple, when 'retValue' got '140583176769504', '%0' got '306205760'. I found '306205760' is the result of truncate int64_t '140583176769504' to int32_t. But how this happens, because %0 also has the type of i64. Or type i64 actually doesn't correspond to int64_t? If so, how can I represent int64_t in llvm?</div><div><br></div><div>Thanks in advance. </div><div><br></div><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br></div><div>Best regards,</div><div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Qiuping Yi</div><div style="font-size:12.8px">Parasol Laboratory</div><div style="font-size:12.8px">Department of Computer Science and Engineering</div><div style="font-size:12.8px">Texas A&M University</div><div style="font-size:12.8px">College Station</div><div style="font-size:12.8px">TX 77843</div></div></div></div></div></div></div></div></div></div></div>
</div>