On Fri, Jan 4, 2019 at 1:57 PM Davide Italiano <dccitali...@gmail.com> wrote:
>
> While adding support for 512-bit integers in `Scalar`, I figured I
> could add some coverage.
>
> TEST(ScalarTest, Signedness) {
>  auto s1 = Scalar(APInt(32, 12, false /* isSigned */));
>  auto s2 = Scalar(APInt(32, 12, true /* isSigned */ ));
>  ASSERT_EQ(s1.GetType(), Scalar::e_uint); // fails
>  ASSERT_EQ(s2.GetType(), Scalar::e_sint); // pass
> }
>
> The result of `s1.GetType()` is Scalar::e_sint.
> This is because an APInt can't distinguish between "int patatino = 12"
> and "uint patatino = 12".
> The correct class in `llvm` to do that is `APSInt`.
>

Please note that this is also broken in the case where you have
APInt(32 /* bitWidth */, -323);
because of the way the constructor is implemented.

--
Davide
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to