diff options
-rw-r--r-- | include/klee/Expr.h | 8 | ||||
-rw-r--r-- | lib/Core/Memory.h | 6 | ||||
-rw-r--r-- | lib/Expr/Parser.cpp | 4 |
3 files changed, 12 insertions, 6 deletions
diff --git a/include/klee/Expr.h b/include/klee/Expr.h index e774eaff..d9cdf5e0 100644 --- a/include/klee/Expr.h +++ b/include/klee/Expr.h @@ -473,8 +473,11 @@ private: class Array { public: + const std::string name; + // FIXME: This does not belong here. const MemoryObject *object; unsigned id; + // FIXME: Not 64-bit clean. unsigned size; // FIXME: This does not belong here. @@ -486,8 +489,9 @@ public: // object! We should probably use the pointer for talking to STP, as // long as we can guarantee that it won't be a "stale" reference // once we have freed it. - Array(const MemoryObject *_object, unsigned _id, uint64_t _size) - : object(_object), id(_id), size(_size), stpInitialArray(0) {} + Array(const std::string &_name, const MemoryObject *_object, + unsigned _id, uint64_t _size) + : name(_name), object(_object), id(_id), size(_size), stpInitialArray(0) {} ~Array() { // FIXME: This relies on caller to delete the STP array. assert(!stpInitialArray && "Array must be deleted by caller!"); diff --git a/lib/Core/Memory.h b/lib/Core/Memory.h index cfb4ab43..537c783a 100644 --- a/lib/Core/Memory.h +++ b/lib/Core/Memory.h @@ -12,6 +12,8 @@ #include "klee/Expr.h" +#include "llvm/ADT/StringExtras.h" + #include <vector> #include <string> @@ -69,7 +71,7 @@ public: MemoryObject(uint64_t _address) : id(counter++), address(_address), - array(new Array(this, 0, id)), + array(new Array("arr" + llvm::utostr(id), this, 0, id)), size(0), isFixed(true), allocSite(0) { @@ -80,7 +82,7 @@ public: const llvm::Value *_allocSite) : id(counter++), address(_address), - array(new Array(this, id, _size)), + array(new Array("arr" + llvm::utostr(id), this, id, _size)), size(_size), name("unnamed"), isLocal(_isLocal), diff --git a/lib/Expr/Parser.cpp b/lib/Expr/Parser.cpp index 496472bf..77596727 100644 --- a/lib/Expr/Parser.cpp +++ b/lib/Expr/Parser.cpp @@ -521,7 +521,7 @@ DeclResult ParserImpl::ParseArrayDecl() { // FIXME: Array should take domain and range. const Identifier *Label = GetOrCreateIdentifier(Name); static int counter = 0; - Array *Root = new Array(0, ++counter, Size.get()); + Array *Root = new Array(Label->Name, 0, ++counter, Size.get()); ArrayDecl *AD = new ArrayDecl(Label, Size.get(), DomainType.get(), RangeType.get(), Root); @@ -1300,7 +1300,7 @@ VersionResult ParserImpl::ParseVersionSpecifier() { VersionResult Res = ParseVersion(); // Define update list to avoid use-of-undef errors. if (!Res.isValid()) { - Res = VersionResult(true, UpdateList(new Array(0, -1, 0), NULL)); + Res = VersionResult(true, UpdateList(new Array("", 0, -1, 0), NULL)); } if (Label) |