diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/Evaluator.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Utils/Evaluator.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/Evaluator.cpp b/llvm/lib/Transforms/Utils/Evaluator.cpp index 51fc423546d..cb5280992fb 100644 --- a/llvm/lib/Transforms/Utils/Evaluator.cpp +++ b/llvm/lib/Transforms/Utils/Evaluator.cpp @@ -203,7 +203,11 @@ Constant *Evaluator::ComputeLoadResult(Constant *P) { break; // Handle a constantexpr bitcast. case Instruction::BitCast: - if (auto *I = getInitializer(CE->getOperand(0))) + Constant *Val = getVal(CE->getOperand(0)); + auto MM = MutatedMemory.find(Val); + auto *I = (MM != MutatedMemory.end()) ? MM->second + : getInitializer(CE->getOperand(0)); + if (I) return ConstantFoldLoadThroughBitcast( I, P->getType()->getPointerElementType(), DL); break; |

