diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ac01312b514..688783ec6057 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,7 @@ * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes; follow chains of regs with a single definition, and allow expressions that are function_invariant_p. + (simple_rhs_p): Allow expressions that are function_invariant_p. 2009-04-24 Paolo Bonzini diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c index 23ece7eea8cb..be7fda813729 100644 --- a/gcc/loop-iv.c +++ b/gcc/loop-iv.c @@ -1341,10 +1341,10 @@ simple_rhs_p (rtx rhs) op1 = XEXP (rhs, 1); /* Allow reg OP const and reg OP reg. */ if (!(REG_P (op0) && !HARD_REGISTER_P (op0)) - && !CONSTANT_P (op0)) + && !function_invariant_p (op0)) return false; if (!(REG_P (op1) && !HARD_REGISTER_P (op1)) - && !CONSTANT_P (op1)) + && !function_invariant_p (op1)) return false; return true; @@ -1358,7 +1358,7 @@ simple_rhs_p (rtx rhs) /* Allow reg OP const. */ if (!(REG_P (op0) && !HARD_REGISTER_P (op0))) return false; - if (!CONSTANT_P (op1)) + if (!function_invariant_p (op1)) return false; return true;