OSDN Git Service

2005-06-01 Richard Guenther <rguenth@gcc.gnu.org>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 09:34:15 +0000 (09:34 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 09:34:15 +0000 (09:34 +0000)
* fold-const.c (fold_binary): Fix types in strlen vs.
zero comparison folding.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100436 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fold-const.c

index b706552..c906a25 100644 (file)
@@ -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.
index 97caf15..18e92e2 100644 (file)
@@ -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