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