From 5352ea68e36a461476228c109a31a4fb5bad7ce7 Mon Sep 17 00:00:00 2001 From: Andrew Pinski <apinski@cavium.com> Date: Fri, 2 Nov 2012 23:32:32 +0000 Subject: [PATCH] re PR rtl-optimization/54524 (Spurious add on sum of bitshifts (forward-propagate issue)) 2012-11-02 Andrew Pinski <apinski@cavium.com> PR rtl-opt/54524 * simplify-rtx.c (simplify_relational_operation_1): Don't simplify (LTU/GEU (PLUS a 0) 0) into (GEU/LTU a 0) since they are not equivalent. From-SVN: r193111 --- gcc/ChangeLog | 6 ++++++ gcc/simplify-rtx.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 284dd8a15203..ada7ff5e7867 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-11-02 Andrew Pinski <apinski@cavium.com> + + PR rtl-opt/54524 + * simplify-rtx.c (simplify_relational_operation_1): Don't simplify + (LTU/GEU (PLUS a 0) 0) into (GEU/LTU a 0) since they are not equivalent. + 2012-11-02 Jan Hubicka <jh@suse.cz> * tree-ssa-loop-niter.c (double_int_cmp, bound_index, diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index cb63b80500e5..6c50d301fe06 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -4546,7 +4546,9 @@ simplify_relational_operation_1 (enum rtx_code code, enum machine_mode mode, && GET_CODE (op0) == PLUS && CONST_INT_P (XEXP (op0, 1)) && (rtx_equal_p (op1, XEXP (op0, 0)) - || rtx_equal_p (op1, XEXP (op0, 1)))) + || rtx_equal_p (op1, XEXP (op0, 1))) + /* (LTU/GEU (PLUS a 0) 0) is not the same as (GEU/LTU a 0). */ + && XEXP (op0, 1) != const0_rtx) { rtx new_cmp = simplify_gen_unary (NEG, cmp_mode, XEXP (op0, 1), cmp_mode); -- GitLab