summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-09-04 04:08:36 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-09-04 04:08:36 +0000
commit55f5e657ee216f56b0b9cb4bcf5ca001441c9ae0 (patch)
tree1d4637731e30cd0457f29b6d523164acd3501d3f
parenta7ab1b4206645e13caca39ae97eb27a0fd39a4a1 (diff)
downloadbcm5719-llvm-55f5e657ee216f56b0b9cb4bcf5ca001441c9ae0.tar.gz
bcm5719-llvm-55f5e657ee216f56b0b9cb4bcf5ca001441c9ae0.zip
Fix APInt value initialization to give a zero value as any sane integer type
should, rather than giving a broken value that doesn't even zero/sign-extend properly. llvm-svn: 246836
-rw-r--r--llvm/include/llvm/ADT/APInt.h5
-rw-r--r--llvm/unittests/ADT/APIntTest.cpp7
2 files changed, 10 insertions, 2 deletions
diff --git a/llvm/include/llvm/ADT/APInt.h b/llvm/include/llvm/ADT/APInt.h
index ea67e7928a7..e2a0cb5e69d 100644
--- a/llvm/include/llvm/ADT/APInt.h
+++ b/llvm/include/llvm/ADT/APInt.h
@@ -294,11 +294,12 @@ public:
delete[] pVal;
}
- /// \brief Default constructor that creates an uninitialized APInt.
+ /// \brief Default constructor that creates an uninteresting APInt
+ /// representing a 1-bit zero value.
///
/// This is useful for object deserialization (pair this with the static
/// method Read).
- explicit APInt() : BitWidth(1) {}
+ explicit APInt() : BitWidth(1), VAL(0) {}
/// \brief Returns whether this instance allocated memory.
bool needsCleanup() const { return !isSingleWord(); }
diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp
index ffba7b16336..0002dad8555 100644
--- a/llvm/unittests/ADT/APIntTest.cpp
+++ b/llvm/unittests/ADT/APIntTest.cpp
@@ -17,6 +17,13 @@ using namespace llvm;
namespace {
+TEST(APIntTest, ValueInit) {
+ APInt Zero = APInt();
+ EXPECT_TRUE(!Zero);
+ EXPECT_TRUE(!Zero.zext(64));
+ EXPECT_TRUE(!Zero.sext(64));
+}
+
// Test that APInt shift left works when bitwidth > 64 and shiftamt == 0
TEST(APIntTest, ShiftLeftByZero) {
APInt One = APInt::getNullValue(65) + 1;
OpenPOWER on IntegriCloud