_Complex double c; _Complex double foo(void) { _Complex double *cp = &c; __real c = __imag c; return *cp; }
has in alias1: foo () { complex double * cp; complex double D.1527; double D.1526; <bb 2>: cp_1 = &c; # VUSE <SFT.0_2>; D.1526_3 = IMAGPART_EXPR <c>; # SFT.1_5 = V_MUST_DEF <SFT.1_4>; REALPART_EXPR <c> = D.1526_3; # VUSE <SFT.1_5>; D.1527_6 = *cp_1; # <retval>_8 = V_MUST_DEF <<retval>_7>; <retval> = D.1527_6; # VUSE <<retval>_8>; return <retval>; } note how D.1527_6 = *cp_1; misses VUSE <SFT.0_2> -- Summary: [4.2 Regression] missing VOPs for complex assignments Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: wrong-code, alias Severity: critical Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26439