aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/fold-const.c10
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b706552..c906a25 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-06-01 Richard Guenther <rguenth@gcc.gnu.org>
+
+ * fold-const.c (fold_binary): Fix types in strlen vs.
+ zero comparison folding.
+
2005-06-01 Richard Henderson <rth@redhat.com>
* configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 97caf15..18e92e2 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -9915,11 +9915,11 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
&& (arglist = TREE_OPERAND (arg0, 1))
&& TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) == POINTER_TYPE
&& ! TREE_CHAIN (arglist))
- return fold_build2 (code, type,
- build1 (INDIRECT_REF, char_type_node,
- TREE_VALUE (arglist)),
- fold_convert (char_type_node,
- integer_zero_node));
+ {
+ tree iref = build_fold_indirect_ref (TREE_VALUE (arglist));
+ return fold_build2 (code, type, iref,
+ build_int_cst (TREE_TYPE (iref), 0));
+ }
}
/* We can fold X/C1 op C2 where C1 and C2 are integer constants