aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/Core
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Core')
-rw-r--r--lib/Core/SpecialFunctionHandler.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/Core/SpecialFunctionHandler.cpp b/lib/Core/SpecialFunctionHandler.cpp
index caec5e39..542d7f5b 100644
--- a/lib/Core/SpecialFunctionHandler.cpp
+++ b/lib/Core/SpecialFunctionHandler.cpp
@@ -30,6 +30,14 @@
#endif
#include "llvm/ADT/Twine.h"
+#if LLVM_VERSION_CODE <= LLVM_VERSION(3, 1)
+#include "llvm/Target/TargetData.h"
+#elif LLVM_VERSION_CODE <= LLVM_VERSION(3, 2)
+#include "llvm/DataLayout.h"
+#else
+#include "llvm/IR/DataLayout.h"
+#endif
+
#include <errno.h>
using namespace llvm;
@@ -538,8 +546,11 @@ void SpecialFunctionHandler::handleGetObjSize(ExecutionState &state,
executor.resolveExact(state, arguments[0], rl, "klee_get_obj_size");
for (Executor::ExactResolutionList::iterator it = rl.begin(),
ie = rl.end(); it != ie; ++it) {
- executor.bindLocal(target, *it->second,
- ConstantExpr::create(it->first.first->size, Expr::Int32));
+ executor.bindLocal(
+ target, *it->second,
+ ConstantExpr::create(it->first.first->size,
+ executor.kmodule->targetData->getTypeSizeInBits(
+ target->inst->getType())));
}
}