cse.c (find_comparison_args): Stop if the argument is known to be constant.

* cse.c (find_comparison_args): Stop if the argument is known to
	be constant.

From-SVN: r38723
This commit is contained in:
J"orn Rennecke 2001-01-05 20:42:30 +00:00 committed by Joern Rennecke
parent 18a7c2a7a1
commit 8b03b9843b
2 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Fri Jan 5 20:34:06 2001 J"orn Rennecke <amylaar@redhat.com>
* cse.c (find_comparison_args): Stop if the argument is known to
be constant.
2001-01-05 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.md (movdf): When splitting load into pair of

View File

@ -3161,7 +3161,20 @@ find_comparison_args (code, parg1, parg2, pmode1, pmode2)
p = lookup (arg1, safe_hash (arg1, GET_MODE (arg1)) & HASH_MASK,
GET_MODE (arg1));
if (p)
p = p->first_same_value;
{
p = p->first_same_value;
/* If what we compare is already known to be constant, that is as
good as it gets.
We need to break the loop in this case, because otherwise we
can have an infinite loop when looking at a reg that is known
to be a constant which is the same as a comparison of a reg
against zero which appears later in the insn stream, which in
turn is constant and the same as the comparison of the first reg
against zero... */
if (p->is_const)
break;
}
for (; p; p = p->next_same_value)
{