SOURCES: gcc-pr23509.patch (NEW) - PR23509 patch: fixes wrong code...

qrczak qrczak at pld-linux.org
Thu Sep 1 15:54:10 CEST 2005


Author: qrczak                       Date: Thu Sep  1 13:54:10 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- PR23509 patch: fixes wrong code generated and internal compiler errors.

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

---- Diffs:

================================================================
Index: SOURCES/gcc-pr23509.patch
diff -u /dev/null SOURCES/gcc-pr23509.patch:1.1
--- /dev/null	Thu Sep  1 15:54:10 2005
+++ SOURCES/gcc-pr23509.patch	Thu Sep  1 15:54:04 2005
@@ -0,0 +1,99 @@
+Index: tree-cfg.c
+===================================================================
+RCS file: /cvs/gcc/gcc/gcc/tree-cfg.c,v
+retrieving revision 2.217
+diff -c -3 -p -r2.217 tree-cfg.c
+*** gcc/gcc/tree-cfg.c	24 Aug 2005 07:56:54 -0000	2.217
+--- gcc/gcc/tree-cfg.c	27 Aug 2005 18:18:40 -0000
+*************** replace_uses_by (tree name, tree val)
+*** 1237,1244 ****
+    FOR_EACH_IMM_USE_SAFE (use, imm_iter, name)
+      {
+        stmt = USE_STMT (use);
+! 
+!       SET_USE (use, val);
+  
+        if (TREE_CODE (stmt) == PHI_NODE)
+  	{
+--- 1237,1243 ----
+    FOR_EACH_IMM_USE_SAFE (use, imm_iter, name)
+      {
+        stmt = USE_STMT (use);
+!       replace_exp (use, val);
+  
+        if (TREE_CODE (stmt) == PHI_NODE)
+  	{
+Index: tree-ssa-loop-ivopts.c
+===================================================================
+RCS file: /cvs/gcc/gcc/gcc/tree-ssa-loop-ivopts.c,v
+retrieving revision 2.87
+diff -c -3 -p -r2.87 tree-ssa-loop-ivopts.c
+*** gcc/gcc/tree-ssa-loop-ivopts.c	13 Aug 2005 17:28:40 -0000	2.87
+--- gcc/gcc/tree-ssa-loop-ivopts.c	27 Aug 2005 18:18:44 -0000
+*************** get_ref_tag (tree ref)
+*** 5448,5456 ****
+      return NULL_TREE;
+  
+    if (TREE_CODE (var) == INDIRECT_REF)
+-     var = TREE_OPERAND (var, 0);
+-   if (TREE_CODE (var) == SSA_NAME)
+      {
+        if (SSA_NAME_PTR_INFO (var))
+  	{
+  	  tag = SSA_NAME_PTR_INFO (var)->name_mem_tag;
+--- 5448,5460 ----
+      return NULL_TREE;
+  
+    if (TREE_CODE (var) == INDIRECT_REF)
+      {
++       /* In case the base is a dereference of a pointer, first check its name
++ 	 mem tag, and if it does not have one, use type mem tag.  */
++       var = TREE_OPERAND (var, 0);
++       if (TREE_CODE (var) != SSA_NAME)
++ 	return NULL_TREE;
++ 
+        if (SSA_NAME_PTR_INFO (var))
+  	{
+  	  tag = SSA_NAME_PTR_INFO (var)->name_mem_tag;
+*************** get_ref_tag (tree ref)
+*** 5459,5476 ****
+  	}
+   
+        var = SSA_NAME_VAR (var);
+      }
+!  
+!   if (DECL_P (var))
+!     {
+        tag = var_ann (var)->type_mem_tag;
+        if (tag)
+  	return tag;
+  
+        return var;
+      }
+- 
+-   return NULL_TREE;
+  }
+  
+  /* Copies the reference information from OLD_REF to NEW_REF.  */
+--- 5463,5483 ----
+  	}
+   
+        var = SSA_NAME_VAR (var);
++       tag = var_ann (var)->type_mem_tag;
++       gcc_assert (tag != NULL_TREE);
++       return tag;
+      }
+!   else
+!     { 
+!       if (!DECL_P (var))
+! 	return NULL_TREE;
+! 
+        tag = var_ann (var)->type_mem_tag;
+        if (tag)
+  	return tag;
+  
+        return var;
+      }
+  }
+  
+  /* Copies the reference information from OLD_REF to NEW_REF.  */
================================================================



More information about the pld-cvs-commit mailing list