From: thopre01 Date: Mon, 18 Jan 2016 03:22:35 +0000 (+0000) Subject: 2016-01-18 Thomas Preud'homme X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06c7d157c3a9d9fa4e0a740ae619ea294dec632a;p=thirdparty%2Fgcc.git 2016-01-18 Thomas Preud'homme gcc/ * config/arm/arm.c (thumb1_reorg): Check that the comparison is against the constant 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232493 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a1839e7e86b..79fb3655966e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-01-18 Thomas Preud'homme + + * config/arm/arm.c (thumb1_reorg): Check that the comparison is + against the constant 0. + 2016-01-17 Bill Schmidt PR tree-optimization/68799 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 1bbaa4a2b020..f152afa40194 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -17206,7 +17206,7 @@ thumb1_reorg (void) FOR_EACH_BB_FN (bb, cfun) { rtx dest, src; - rtx pat, op0, set = NULL; + rtx cmp, op0, op1, set = NULL; rtx_insn *prev, *insn = BB_END (bb); bool insn_clobbered = false; @@ -17219,8 +17219,13 @@ thumb1_reorg (void) continue; /* Get the register with which we are comparing. */ - pat = PATTERN (insn); - op0 = XEXP (XEXP (SET_SRC (pat), 0), 0); + cmp = XEXP (SET_SRC (PATTERN (insn)), 0); + op0 = XEXP (cmp, 0); + op1 = XEXP (cmp, 1); + + /* Check that comparison is against ZERO. */ + if (!CONST_INT_P (op1) || INTVAL (op1) != 0) + continue; /* Find the first flag setting insn before INSN in basic block BB. */ gcc_assert (insn != BB_HEAD (bb)); @@ -17260,7 +17265,7 @@ thumb1_reorg (void) PATTERN (prev) = gen_rtx_SET (dest, src); INSN_CODE (prev) = -1; /* Set test register in INSN to dest. */ - XEXP (XEXP (SET_SRC (pat), 0), 0) = copy_rtx (dest); + XEXP (cmp, 0) = copy_rtx (dest); INSN_CODE (insn) = -1; } }