aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2003-06-09 18:42:33 -0400
committerJason Merrill <jason@gcc.gnu.org>2003-06-09 18:42:33 -0400
commit1bfedcc8fbe8a76a23ab8164834a4f52b6b1ac47 (patch)
tree7d01542270e473a4ac65803ce0f147890585d005
parent75b2a93c09d64a8f391e8569361a6dd1a6e39aff (diff)
downloadgcc-1bfedcc8fbe8a76a23ab8164834a4f52b6b1ac47.zip
gcc-1bfedcc8fbe8a76a23ab8164834a4f52b6b1ac47.tar.gz
gcc-1bfedcc8fbe8a76a23ab8164834a4f52b6b1ac47.tar.bz2
* fold-const.c (operand_equal_p): Handle ADDR_EXPR and TRUTH_NOT_EXPR.
From-SVN: r67683
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/fold-const.c16
2 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 231dccd..ef0c632 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2003-06-09 Jason Merrill <jason@redhat.com>
+
+ * fold-const.c (operand_equal_p): Handle ADDR_EXPR and TRUTH_NOT_EXPR.
+
2003-06-19 Osku Salerma <osku@iki.fi>
* c-format.c (check_format_string, get_constant): New.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index c97213a..1f118e8 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2000,9 +2000,19 @@ operand_equal_p (arg0, arg1, only_const)
}
case 'e':
- if (TREE_CODE (arg0) == RTL_EXPR)
- return rtx_equal_p (RTL_EXPR_RTL (arg0), RTL_EXPR_RTL (arg1));
- return 0;
+ switch (TREE_CODE (arg0))
+ {
+ case ADDR_EXPR:
+ case TRUTH_NOT_EXPR:
+ return operand_equal_p (TREE_OPERAND (arg0, 0),
+ TREE_OPERAND (arg1, 0), 0);
+
+ case RTL_EXPR:
+ return rtx_equal_p (RTL_EXPR_RTL (arg0), RTL_EXPR_RTL (arg1));
+
+ default:
+ return 0;
+ }
default:
return 0;