From a7a4457e29fc6ba350a52c5ebf350526e44d60b7 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Tue, 15 Oct 1996 21:54:30 +0000 Subject: [PATCH] * loop.c (strength_reduce): Avoid taking PATTERN of a label. From-SVN: r12965 --- gcc/loop.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/gcc/loop.c b/gcc/loop.c index 6646e9b4eb6..3d07320458b 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -3952,12 +3952,18 @@ strength_reduce (scan_start, end, loop_top, insn_count, auto_inc_opt = 1; #ifdef HAVE_cc0 - /* We can't put an insn immediately after one setting - cc0, or immediately before one using cc0. */ - if ((auto_inc_opt == 1 && sets_cc0_p (PATTERN (v->insn))) - || (auto_inc_opt == -1 - && sets_cc0_p (PATTERN (prev_nonnote_insn (v->insn))))) - auto_inc_opt = 0; + { + rtx prev; + + /* We can't put an insn immediately after one setting + cc0, or immediately before one using cc0. */ + if ((auto_inc_opt == 1 && sets_cc0_p (PATTERN (v->insn))) + || (auto_inc_opt == -1 + && (prev = prev_nonnote_insn (v->insn)) != 0 + && GET_RTX_CLASS (GET_CODE (prev)) == 'i' + && sets_cc0_p (PATTERN (prev)))) + auto_inc_opt = 0; + } #endif if (auto_inc_opt) -- 2.30.2