From: Jeffrey A Law Date: Sun, 26 Oct 1997 16:20:07 +0000 (+0000) Subject: loop.c (simplify_giv_expr): Adding two invariants results in an invariant. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=da0af5a56fc0b83f9c7f7eaa4038a4a627f4cfbc;p=gcc.git loop.c (simplify_giv_expr): Adding two invariants results in an invariant. * loop.c (simplify_giv_expr): Adding two invariants results in an invariant. From-SVN: r16179 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 80d231e2f13..a1b6628ca77 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sun Oct 26 09:21:40 1997 Jeffrey A Law (law@cygnus.com) + + * loop.c (simplify_giv_expr): Adding two invariants results + in an invariant. + Sun Oct 26 09:15:15 1997 Richard Henderson * expr.c (get_inner_reference): Remove the array bias after diff --git a/gcc/loop.c b/gcc/loop.c index 6bae48fec98..73f347fd86f 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -5353,10 +5353,13 @@ simplify_giv_expr (x, benefit) case CONST_INT: case USE: /* Both invariant. Only valid if sum is machine operand. - First strip off possible USE on first operand. */ + First strip off possible USE on the operands. */ if (GET_CODE (arg0) == USE) arg0 = XEXP (arg0, 0); + if (GET_CODE (arg1) == USE) + arg1 = XEXP (arg1, 0); + tem = 0; if (CONSTANT_P (arg0) && GET_CODE (arg1) == CONST_INT) { @@ -5364,6 +5367,13 @@ simplify_giv_expr (x, benefit) if (GET_CODE (tem) != CONST_INT) tem = gen_rtx (USE, mode, tem); } + else + { + /* Adding two invariants must result in an invariant, + so enclose addition operation inside a USE and + return it. */ + tem = gen_rtx (USE, mode, gen_rtx (PLUS, mode, arg0, arg1)); + } return tem;