OSDN Git Service

2005-11-19 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Nov 2005 21:40:28 +0000 (21:40 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Nov 2005 21:40:28 +0000 (21:40 +0000)
* fold-const.c (fold_indirect_ref_1): Make sure we fold
ARRAY_REFs of constant strings.

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

gcc/ChangeLog
gcc/fold-const.c

index 02039cf..446c528 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-19  Richard Guenther  <rguenther@suse.de>
+
+       * fold-const.c (fold_indirect_ref_1): Make sure we fold
+       ARRAY_REFs of constant strings.
+
 2005-11-19  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.c (version_compare_spec_function): Use '%s' rather than %qs in
index b8576fc..c4dd4f9 100644 (file)
@@ -11523,9 +11523,15 @@ fold_indirect_ref_1 (tree type, tree op0)
     {
       tree op = TREE_OPERAND (sub, 0);
       tree optype = TREE_TYPE (op);
-      /* *&p => p */
+      /* *&p => p;  make sure to handle *&"str"[cst] here.  */
       if (type == optype)
-       return op;
+       {
+         tree fop = fold_read_from_constant_string (op);
+         if (fop)
+           return fop;
+         else
+           return op;
+       }
       /* *(foo *)&fooarray => fooarray[0] */
       else if (TREE_CODE (optype) == ARRAY_TYPE
               && type == TREE_TYPE (optype))