------- Comment #5 from pinskia at gcc dot gnu dot org 2006-12-09 14:24 ------- After gimplification: D.1853 = *t; if (D.1853 == __complex__ (0.0, 0.0)) { D.1854 = __complex__ (0.0, 0.0); iftmp.0 = &D.1854; } else { D.1855 = *t; D.1856 = -D.1855; iftmp.0 = &D.1856; } D.1857 = REALPART_EXPR <*iftmp.0>; *b = D.1857;
Before: *b = REALPART_EXPR <*t == __complex__ (0.0, 0.0) ? __complex__ (0.0, 0.0) : -*t>; I have not figured out why we need to take the address of the temp variable yet. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30132