diff options
author | Julian Büning <julian.buening@rwth-aachen.de> | 2020-10-10 15:13:06 +0200 |
---|---|---|
committer | Cristian Cadar <c.cadar@imperial.ac.uk> | 2020-11-12 10:13:54 +0000 |
commit | c763a4087f1d8fa4dbdfb9c8f30d545cdb66a0aa (patch) | |
tree | 5d40c27ecfb16230aa3e714a3e7690b44b322860 /lib/Expr/ArrayExprOptimizer.cpp | |
parent | acdb9a692d9eee8dd102befa4e101bfa5f028b0e (diff) | |
download | klee-c763a4087f1d8fa4dbdfb9c8f30d545cdb66a0aa.tar.gz |
Ref: implement operator bool()
Diffstat (limited to 'lib/Expr/ArrayExprOptimizer.cpp')
-rw-r--r-- | lib/Expr/ArrayExprOptimizer.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/Expr/ArrayExprOptimizer.cpp b/lib/Expr/ArrayExprOptimizer.cpp index 8877efd5..a2367506 100644 --- a/lib/Expr/ArrayExprOptimizer.cpp +++ b/lib/Expr/ArrayExprOptimizer.cpp @@ -147,7 +147,7 @@ ref<Expr> ExprOptimizer::optimizeExpr(const ref<Expr> &e, bool valueOnly) { result = ConstantExpr::create(0, Expr::Bool); } // Add new expression to cache - if (result.get()) { + if (result) { klee_warning("OPT_I: successful"); cacheExprOptimized[e] = result; } else { @@ -161,7 +161,7 @@ ref<Expr> ExprOptimizer::optimizeExpr(const ref<Expr> &e, bool valueOnly) { } // ----------------------- VALUE-BASED OPTIMIZATION ------------------------- if (OptimizeArray == VALUE || - (OptimizeArray == ALL && (!result.get() || valueOnly))) { + (OptimizeArray == ALL && (!result || valueOnly))) { std::vector<const ReadExpr *> reads; std::map<const ReadExpr *, std::pair<ref<Expr>, Expr::Width>> readInfo; ArrayReadExprVisitor are(reads, readInfo); @@ -175,7 +175,7 @@ ref<Expr> ExprOptimizer::optimizeExpr(const ref<Expr> &e, bool valueOnly) { ref<Expr> selectOpt = getSelectOptExpr(e, reads, readInfo, are.containsSymbolic()); - if (selectOpt.get()) { + if (selectOpt) { klee_warning("OPT_V: successful"); result = selectOpt; cacheExprOptimized[e] = result; @@ -184,7 +184,7 @@ ref<Expr> ExprOptimizer::optimizeExpr(const ref<Expr> &e, bool valueOnly) { cacheExprUnapplicable.insert(e); } } - if (result.isNull()) + if (!result) return e; return result; } @@ -204,12 +204,11 @@ bool ExprOptimizer::computeIndexes(array2idx_ty &arrays, const ref<Expr> &e, assert((idxt_v.getWidth() % arr->range == 0) && "Read is not aligned"); Expr::Width width = idxt_v.getWidth() / arr->range; - if (idxt_v.getMul().get()) { + if (auto e = idxt_v.getMul()) { // If we have a MulExpr in the index, we can optimize our search by // skipping all those indexes that are not multiple of such value. // In fact, they will be rejected by the MulExpr interpreter since it // will not find any integer solution - auto e = idxt_v.getMul(); auto ce = dyn_cast<ConstantExpr>(e); assert(ce && "Not a constant expression"); uint64_t mulVal = (*ce->getAPValue().getRawData()); @@ -320,7 +319,7 @@ ref<Expr> ExprOptimizer::getSelectOptExpr( ref<Expr> opt = buildConstantSelectExpr(index, arrayValues, width, elementsInArray); - if (opt.get()) { + if (opt) { cacheReadExprOptimized[const_cast<ReadExpr *>(read)] = opt; optimized.insert(std::make_pair(info.first, opt)); } @@ -418,7 +417,7 @@ ref<Expr> ExprOptimizer::getSelectOptExpr( // Build the dynamic select expression ref<Expr> opt = buildMixedSelectExpr(read, arrayValues, width, elementsInArray); - if (opt.get()) { + if (opt) { cacheReadExprOptimized[const_cast<ReadExpr *>(read)] = opt; optimized.insert(std::make_pair(info.first, opt)); } @@ -428,7 +427,7 @@ ref<Expr> ExprOptimizer::getSelectOptExpr( toReturn = replacer.visit(e); } - return toReturn.get() ? toReturn : notFound; + return toReturn ? toReturn : notFound; } ref<Expr> ExprOptimizer::buildConstantSelectExpr( |