double _Complex *a; 
const double _Complex b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 
 
void 
test (void) 
{ 
  a[0] = b[0] + b[1]; 
  a[1] = b[0] + b[1]; 
  return; 
} 
 
--> 
 
;; Function test (test) 
 
test () 
{ 
  double CI.17; 
  double CR.16; 
  complex double * D.1616; 
  complex double * a.0; 
 
<bb 0>: 
  a.0 = a; 
  CR.16 = REALPART_EXPR <b[0]> + REALPART_EXPR <b[1]>; 
  CI.17 = IMAGPART_EXPR <b[0]> + IMAGPART_EXPR <b[1]>; 
  REALPART_EXPR <*a.0> = CR.16; 
  IMAGPART_EXPR <*a.0> = CI.17; 
  D.1616 = a.0 + 16B; 
  REALPART_EXPR <*D.1616> = CR.16; 
  IMAGPART_EXPR <*D.1616> = CI.17; 
  return; 
 
} 
 
CSE later optimizes this, but we should do it earlier.

-- 
           Summary: Failure to propagate constants from a const initializer
                    for _Complex
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: missed-optimization, TREE
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: steven at gcc dot gnu dot org
                CC: bonzini at gcc dot gnu dot org,gcc-bugs at gcc dot gnu
                    dot org
OtherBugsDependingO 19721
             nThis:


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

Reply via email to