From 713c1a3744aa8c0bfadf85a76377dd2c7dd63519 Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Wed, 17 Oct 2018 22:39:06 +0100 Subject: optimizeExpr: return the result as return value instead as function argument simplifies code a lot. --- lib/Expr/ArrayExprOptimizer.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'lib/Expr/ArrayExprOptimizer.cpp') diff --git a/lib/Expr/ArrayExprOptimizer.cpp b/lib/Expr/ArrayExprOptimizer.cpp index 3a071665..2d817e83 100644 --- a/lib/Expr/ArrayExprOptimizer.cpp +++ b/lib/Expr/ArrayExprOptimizer.cpp @@ -42,20 +42,17 @@ llvm::cl::opt ArrayValueSymbRatio( llvm::cl::init(1.0), llvm::cl::value_desc("Symbolic Values / Array Size")); }; -void ExprOptimizer::optimizeExpr(const ref &e, ref &result, - bool valueOnly) { +ref ExprOptimizer::optimizeExpr(const ref &e, bool valueOnly) { unsigned hash = e->hash(); - if (cacheExprUnapplicable.find(hash) != cacheExprUnapplicable.end()) { - return; - } + if (cacheExprUnapplicable.find(hash) != cacheExprUnapplicable.end()) + return e; // Find cached expressions auto cached = cacheExprOptimized.find(hash); - if (cached != cacheExprOptimized.end()) { - result = cached->second; - return; - } + if (cached != cacheExprOptimized.end()) + return cached->second; + ref result; // ----------------------- INDEX-BASED OPTIMIZATION ------------------------- if (!valueOnly && (OptimizeArray == ALL || OptimizeArray == INDEX)) { array2idx_ty arrays; @@ -69,7 +66,7 @@ void ExprOptimizer::optimizeExpr(const ref &e, ref &result, // when we are not combining the optimizations if (OptimizeArray == INDEX) { cacheExprUnapplicable.insert(hash); - return; + return e; } } else { mapIndexOptimizedExpr_ty idx_valIdx; @@ -107,7 +104,7 @@ void ExprOptimizer::optimizeExpr(const ref &e, ref &result, if (reads.size() == 0 || are.isIncompatible()) { cacheExprUnapplicable.insert(hash); - return; + return e; } ref selectOpt = @@ -121,6 +118,9 @@ void ExprOptimizer::optimizeExpr(const ref &e, ref &result, cacheExprUnapplicable.insert(hash); } } + if (result.isNull()) + return e; + return result; } bool ExprOptimizer::computeIndexes(array2idx_ty &arrays, const ref &e, -- cgit 1.4.1