diff options
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/cse.c | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a418bfc..202edce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2005-01-26 Kazu Hirata <kazu@cs.umass.edu> + + * cse.c (fold_rtx): Call equiv_constant only when necessary. + 2005-01-26 Bernd Schmidt <bernd.schmidt@analog.com> * function.c (expand_function_end): If current_function_calls_alloca, @@ -3877,8 +3877,6 @@ fold_rtx (rtx x, rtx insn) code = find_comparison_args (code, &folded_arg0, &folded_arg1, &mode_arg0, &mode_arg1); - const_arg0 = equiv_constant (folded_arg0); - const_arg1 = equiv_constant (folded_arg1); /* If the mode is VOIDmode or a MODE_CC mode, we don't know what kinds of things are being compared, so we can't do @@ -3887,6 +3885,9 @@ fold_rtx (rtx x, rtx insn) if (mode_arg0 == VOIDmode || GET_MODE_CLASS (mode_arg0) == MODE_CC) break; + const_arg0 = equiv_constant (folded_arg0); + const_arg1 = equiv_constant (folded_arg1); + /* If we do not now have two constants being compared, see if we can nevertheless deduce some things about the comparison. */ |
