[Bug tree-optimization/27341] [4.2 Regression] ICE in in add_virtual_operand with complex types

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu May 11 08:56:00 GMT 2006



------- Comment #5 from rguenth at gcc dot gnu dot org  2006-05-11 08:56 -------
Reduced testcase:

double zero;
double matmul_c8 (_Complex double * dest)
{
  *dest += 1;
  return zero;
}

we go from before cplxlower

matmul_c8 (dest)
{
  double D.1526;
  complex double D.1525;
  complex double D.1524;

<bb 2>:
  #   VUSE <zero_4>;
  D.1524_2 = *dest_1;
  D.1525_3 = D.1524_2 + __complex__ (1.0e+0, 0.0);
  #   zero_7 = V_MAY_DEF <zero_4>;
  *dest_1 = D.1525_3;
  #   VUSE <zero_7>;
  D.1526_5 = zero;
  return D.1526_5;

}

to after it

;; basic block 2, loop depth 0, count 0
;; prev block 0, next block 1
;; pred:       ENTRY [100.0%]  (fallthru,exec)
;; succ:       EXIT [100.0%] 
<bb 2>:
#   VUSE <SMT.4>;
D.1538 = REALPART_EXPR <*dest_1>;
#   VUSE <SMT.4>;
D.1539 = IMAGPART_EXPR <*dest_1>;
D.1524_2 = COMPLEX_EXPR <D.1538, D.1539>;
CR.9_9 = D.1538;
CI.10_10 = D.1539;
D.1542 = CR.9_9 + 1.0e+0;
D.1525_3 = COMPLEX_EXPR <D.1542, CI.10_10>;
CR.11_11 = D.1542;
#   zero_7 = V_MAY_DEF <zero_4>;
*dest_1 = D.1525_3;
#   VUSE <zero_7>;
D.1526_5 = zero;
return D.1526_5;

note that for the complex dest, we have Vops for zero only, but later
a SMT falls out of the sky.


-- 


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



More information about the Gcc-bugs mailing list