[llvm-dev] llvm::PointerIntPair -- is this by design or a bug?
Florian Hahn via llvm-dev
llvm-dev at lists.llvm.org
Wed Apr 4 03:01:54 PDT 2018
Hi,
On 04/04/2018 05:34, Riyaz Puthiyapurayil via llvm-dev wrote:
> llvm::PointerIntPair<double*, 3, signed> P;
>
> P.setInt(-4);
>
> Ideally, the value range for a 3-bit signed integer should be [-4,3].
> But the above call to setInt will fail. Essentially, the signed int
> field in PointerIntPair is behaving the same as an 3-bit unsigned field
> which has the legal value range of [0,7]. Is this by design? Are
> negative values not allowed in PointerIntPair?
>
I think that's by design. setInt only allows you to set integer values
that fit into the available bits. It won't move the sign bit, so
negative values won't fit, unless you have a 3 bit signed type ;)
Cheers,
Florian
More information about the llvm-dev
mailing list