[llvm-dev] Issue with getting unsigned Constant from APInt

Lei Zhang via llvm-dev llvm-dev at lists.llvm.org
Mon Nov 19 14:51:46 PST 2018



Hi there,

I have been trying to obtain a Constant from an APInt using
```
auto maskConstant = llvm::ConstantInt::get(intTy, maskPiece);
```
where `intTy` is a IntergerType pointer (64-bit) and `maskPiece` is an
APInt object. However, if `maskPiece` has the a big value say
18374686479671623680, which is
1111111100000000000000000000000000000000000000000000000000000000. The
constant will return a negative value -72057594037927936, which looks it is
always converted to a signed integer. How can i keep it as unsigned?

I have also tried `maskConstant = llvm::ConstantInt::get(intTy,
maskPiece.getZExtValue(), false);` or `maskConstant =
llvm::ConstantInt::get(intTy, maskPiece.getZExtValue(), false);`, both
returned the same negative value. Any help will be appreciated.

Best regards,

Leo Z
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181119/78ee1f81/attachment.html>


More information about the llvm-dev mailing list