From 8ee5755ac51d5a58f54243903927d84c3150dd19 Mon Sep 17 00:00:00 2001 From: Fred Chow Date: Tue, 14 Sep 2021 20:02:31 -0700 Subject: [PATCH] Do not restrict the accumulation of subtracted constants; regard all CVTs among 64-bit integer as not needed --- src/mapleall/maple_ir/src/mir_type.cpp | 4 ++-- src/mapleall/mpl2mpl/src/constantfold.cpp | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mapleall/maple_ir/src/mir_type.cpp b/src/mapleall/maple_ir/src/mir_type.cpp index 0436fd7469..fb730cf6d1 100644 --- a/src/mapleall/maple_ir/src/mir_type.cpp +++ b/src/mapleall/maple_ir/src/mir_type.cpp @@ -178,11 +178,11 @@ bool IsNoCvtNeeded(PrimType toType, PrimType fromType) { case PTY_i8: case PTY_i16: return fromType == PTY_i32; + case PTY_i64: case PTY_u64: case PTY_a64: - return fromType == PTY_ptr; case PTY_ptr: - return fromType == PTY_u64 || fromType == PTY_a64; + return fromType == PTY_ptr || fromType == PTY_u64 || fromType == PTY_a64 || fromType == PTY_i64; default: return false; } diff --git a/src/mapleall/mpl2mpl/src/constantfold.cpp b/src/mapleall/mpl2mpl/src/constantfold.cpp index 8da165aff4..48bfa47520 100644 --- a/src/mapleall/mpl2mpl/src/constantfold.cpp +++ b/src/mapleall/mpl2mpl/src/constantfold.cpp @@ -1688,10 +1688,13 @@ std::pair ConstantFold::FoldBinary(BinaryNode *node) { result = l; sum = lp.second + cst; } else if (op == OP_sub) { +#if 0 // this is preventing good optimizations if (IsSignedInteger(primType) && MinValOfSignedInteger(primType) <= cst) { result = node; sum = 0; - } else { + } else +#endif + { result = l; sum = lp.second - cst; } -- Gitee