diff options
author | Julian Büning <julian.buening@comsys.rwth-aachen.de> | 2019-10-15 17:13:46 +0200 |
---|---|---|
committer | Cristian Cadar <c.cadar@imperial.ac.uk> | 2020-10-21 18:37:39 +0100 |
commit | eb197d5737fa8fe9e75747ee1a26ee55b942c916 (patch) | |
tree | aac0ae95c31d03d42e8d6c854b64c96eaeafe3af | |
parent | 2c9ddbd77009e9eb00a556d1e8bcb3381da709cf (diff) | |
download | klee-eb197d5737fa8fe9e75747ee1a26ee55b942c916.tar.gz |
fix Executor: remove UB from bindInstructionConstants
-rw-r--r-- | lib/Core/Executor.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp index 2e6f9c89..ea386cfd 100644 --- a/lib/Core/Executor.cpp +++ b/lib/Core/Executor.cpp @@ -3315,14 +3315,15 @@ void Executor::computeOffsets(KGEPInstruction *kgepi, TypeIt ib, TypeIt ie) { } void Executor::bindInstructionConstants(KInstruction *KI) { - KGEPInstruction *kgepi = static_cast<KGEPInstruction*>(KI); - if (GetElementPtrInst *gepi = dyn_cast<GetElementPtrInst>(KI->inst)) { + KGEPInstruction *kgepi = static_cast<KGEPInstruction *>(KI); computeOffsets(kgepi, gep_type_begin(gepi), gep_type_end(gepi)); } else if (InsertValueInst *ivi = dyn_cast<InsertValueInst>(KI->inst)) { + KGEPInstruction *kgepi = static_cast<KGEPInstruction *>(KI); computeOffsets(kgepi, iv_type_begin(ivi), iv_type_end(ivi)); assert(kgepi->indices.empty() && "InsertValue constant offset expected"); } else if (ExtractValueInst *evi = dyn_cast<ExtractValueInst>(KI->inst)) { + KGEPInstruction *kgepi = static_cast<KGEPInstruction *>(KI); computeOffsets(kgepi, ev_type_begin(evi), ev_type_end(evi)); assert(kgepi->indices.empty() && "ExtractValue constant offset expected"); } |