From 7ed9e61ce9035d6303758e6d66a9d6ba0c7adde9 Mon Sep 17 00:00:00 2001 From: sje Date: Fri, 23 Oct 2015 15:56:15 +0000 Subject: [PATCH] 2015-10-23 Steve Ellcey Andrew Pinski PR rtl-optimization/67736 * combine.c (simplify_comparison): Use gen_lowpart_or_truncate instead of gen_lowpart. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229259 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/combine.c | 11 ++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54359a0..25e4063 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-10-23 Steve Ellcey + Andrew Pinski + + PR rtl-optimization/67736 + * combine.c (simplify_comparison): Use gen_lowpart_or_truncate instead + of gen_lowpart. + 2015-10-23 Ilya Enkovich PR middle-end/68066 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; } -- 2.7.4