------- Additional Comments From steven at gcc dot gnu dot org  2005-09-16 
09:58 -------
This fixes it.  Sadly only store-ccp propagates constants out of  
initializers right now, which is a separate bug -- we _do_ find the  
constant in the initializer... but then we don't propagate it for  
some reason.  I'm also looking into that.  
  
Index: tree-ssa-ccp.c  
===================================================================  
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-ccp.c,v  
retrieving revision 2.87  
diff -u -3 -p -r2.87 tree-ssa-ccp.c  
--- tree-ssa-ccp.c      17 Aug 2005 07:27:38 -0000      2.87  
+++ tree-ssa-ccp.c      16 Sep 2005 09:56:43 -0000  
@@ -1045,6 +1045,15 @@ fold_const_aggregate_ref (tree t)  
          return cval;  
       break;  
  
+    case REALPART_EXPR:  
+    case IMAGPART_EXPR:  
+      {  
+       tree c = fold_const_aggregate_ref (TREE_OPERAND (t, 0));  
+       if (c && TREE_CODE (c) == COMPLEX_CST)  
+         return fold_build1 (TREE_CODE (t), TREE_TYPE (t), c);  
+       break;  
+      }  
+  
     default:  
       break;  
     }  
  

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23911

Reply via email to