aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorSteve Ellcey <sellcey@imgtec.com>2015-10-23 15:56:15 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2015-10-23 15:56:15 +0000
commit2c40b14dfdde747212f10fcdbd105034f1b738df (patch)
tree0dabf81de1be9e8e083e3b8ea883873cdb7d278c /gcc/combine.c
parentf819b3b278609360242d969027031a9a9381edeb (diff)
downloadgcc-2c40b14dfdde747212f10fcdbd105034f1b738df.zip
gcc-2c40b14dfdde747212f10fcdbd105034f1b738df.tar.gz
gcc-2c40b14dfdde747212f10fcdbd105034f1b738df.tar.bz2
re PR rtl-optimization/67736 (Wrong optimization with -fexpensive-optimizations on mips64el)
2015-10-23 Steve Ellcey <sellcey@imgtec.com> Andrew Pinski <apinski@cavium.com> PR rtl-optimization/67736 * combine.c (simplify_comparison): Use gen_lowpart_or_truncate instead of gen_lowpart. Co-Authored-By: Andrew Pinski <apinski@cavium.com> From-SVN: r229259
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index f755127..f0265d7 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -11530,8 +11530,8 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
tmode != GET_MODE (op0); tmode = GET_MODE_WIDER_MODE (tmode))
if ((unsigned HOST_WIDE_INT) c0 == GET_MODE_MASK (tmode))
{
- op0 = gen_lowpart (tmode, inner_op0);
- op1 = gen_lowpart (tmode, inner_op1);
+ op0 = gen_lowpart_or_truncate (tmode, inner_op0);
+ op1 = gen_lowpart_or_truncate (tmode, inner_op1);
code = unsigned_condition (code);
changed = 1;
break;
@@ -12049,12 +12049,9 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
& GET_MODE_MASK (mode))
+ 1)) >= 0
&& const_op >> i == 0
- && (tmode = mode_for_size (i, MODE_INT, 1)) != BLKmode
- && (TRULY_NOOP_TRUNCATION_MODES_P (tmode, GET_MODE (op0))
- || (REG_P (XEXP (op0, 0))
- && reg_truncated_to_mode (tmode, XEXP (op0, 0)))))
+ && (tmode = mode_for_size (i, MODE_INT, 1)) != BLKmode)
{
- op0 = gen_lowpart (tmode, XEXP (op0, 0));
+ op0 = gen_lowpart_or_truncate (tmode, XEXP (op0, 0));
continue;
}