[llvm-dev] A strange problem about type i64 for LLVM

Qiuping Yi via llvm-dev llvm-dev at lists.llvm.org
Wed Jul 12 08:10:15 PDT 2017

Hello, everyone,

I encounter a strange problem about llvm type i64 and C++ type int64_t.

I instrumented a program to call the function 'myFunction' in the C++
shared library. 'myFunction' is something like this:

int64_t myFunction() {
     int64_t retValue;
     std::cout << "retValue: " << retValue << "\n";
     return retValue;

The call instruction in llvm bytecode is something like this:

%0 = call i64 myFunction();

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?

Thanks in advance.

Best regards,

Qiuping Yi
Parasol Laboratory
Department of Computer Science and Engineering
Texas A&M University
College Station
TX 77843
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170712/b23347fc/attachment.html>

More information about the llvm-dev mailing list