SOURCES: gcc-pr24172.patch (NEW) - critical fix / [4.1 regression]...

pluto pluto at pld-linux.org
Wed Oct 19 11:01:36 CEST 2005


Author: pluto                        Date: Wed Oct 19 09:01:36 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- critical fix / [4.1 regression] error: incorrect sharing of tree nodes.

---- Files affected:
SOURCES:
   gcc-pr24172.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/gcc-pr24172.patch
diff -u /dev/null SOURCES/gcc-pr24172.patch:1.1
--- /dev/null	Wed Oct 19 11:01:36 2005
+++ SOURCES/gcc-pr24172.patch	Wed Oct 19 11:01:31 2005
@@ -0,0 +1,39 @@
+This fixes the PR by making sure we fold "foo"[0] to 'f'
+during fold_indirect_ref.
+
+	PR tree-optimization/24172
+	* fold-const.c (fold_indirect_ref_1): Make sure we fold
+	ARRAY_REFs of constant strings.
+
+	* g++.dg/tree-ssa/pr24172.C: New testcase.
+
+
+*** gcc/gcc/fold-const.c	26 Sep 2005 01:28:38 -0000	1.626
+--- gcc/gcc/fold-const.c	4 Oct 2005 10:59:06 -0000
+*************** fold_indirect_ref_1 (tree type, tree op0
+*** 11511,11519 ****
+      {
+        tree op = TREE_OPERAND (sub, 0);
+        tree optype = TREE_TYPE (op);
+!       /* *&p => p */
+        if (type == optype)
+! 	return op;
+        /* *(foo *)&fooarray => fooarray[0] */
+        else if (TREE_CODE (optype) == ARRAY_TYPE
+  	       && type == TREE_TYPE (optype))
+--- 11511,11525 ----
+      {
+        tree op = TREE_OPERAND (sub, 0);
+        tree optype = TREE_TYPE (op);
+!       /* *&p => p;  make sure to handle *&"str"[cst] here.  */
+        if (type == optype)
+! 	{
+! 	  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))
================================================================



More information about the pld-cvs-commit mailing list