From c47d1dbaeb4f5ed3d09d1f440fb3a513e8ad73d3 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Sun, 11 Oct 2009 19:09:01 +0000 Subject: [PATCH] simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for all OLD_RTXes, not just REGs. gcc/ * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for all OLD_RTXes, not just REGs. Use copy_rtx to create the replacement value. From-SVN: r152646 --- gcc/ChangeLog | 6 ++++++ gcc/simplify-rtx.c | 9 ++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ebe6cae03c..ba83cf992a4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-10-11 Richard Sandiford + + * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for + all OLD_RTXes, not just REGs. Use copy_rtx to create the + replacement value. + 2009-10-11 Richard Guenther * gimple.c (iterative_hash_type_name): Do not handle special diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 0450ea083f4..4e87d04abaf 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -365,8 +365,8 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx) to build a new expression substituting recursively. If we can't do anything, return our input. */ - if (x == old_rtx) - return new_rtx; + if (rtx_equal_p (x, old_rtx)) + return copy_rtx (new_rtx); switch (GET_RTX_CLASS (code)) { @@ -445,11 +445,6 @@ simplify_replace_rtx (rtx x, const_rtx old_rtx, rtx new_rtx) return x; return gen_rtx_LO_SUM (mode, op0, op1); } - else if (code == REG) - { - if (rtx_equal_p (x, old_rtx)) - return new_rtx; - } break; default: