http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49472
--- Comment #6 from William J. Schmidt <wschmidt at gcc dot gnu.org> 2011-06-20 15:16:59 UTC --- Gimple out of the middle end looks fine. From 142t.optimized: ;; Function nu_derivs (__massivenu_MOD_nu_derivs, funcdef_no=0, decl_uid=708, cgraph_uid=0) nu_derivs () { real(kind=8) D.719; real(kind=8) vdot; integer(kind=4) iq; real(kind=8) g1[4]; real(kind=8) aqdot; real(kind=8) aq; real(kind=8) adotoa; integer(kind=8) D.736; integer(kind=8) D.735; real(kind=8) D.734; real(kind=8) D.733; real(kind=8) D.732; real(kind=8) D.731; real(kind=8) D.730; real(kind=8) D.729; real(kind=8) D.728; real(kind=8) D.727; <bb 2>: # DEBUG iq => 2 <bb 3>: # iq_1 = PHI <2(2), iq_19(3)> # DEBUG iq => iq_1 D.727_3 = (real(kind=8)) iq_1; D.728_4 = D.727_3 - 1.5e+0; D.729_5 = ((D.728_4)); aq_6 = 1.0e+0 / D.729_5; # DEBUG aq => aq_6 # DEBUG aqdot => aq_6 * adotoa_7(D) D.730_9 = __builtin_pow (aq_6, 2.0e+0); D.731_10 = D.730_9 + 1.0e+0; D.719_11 = ((D.731_10)); D.733_13 = __builtin_pow (D.719_11, -1.5e+0); aqdot_8 = D.733_13 * adotoa_7(D); D.732_12 = aqdot_8 * aq_6; D.734_14 = D.732_12 * aq_6; vdot_15 = -D.734_14; # DEBUG vdot => vdot_15 D.735_16 = (integer(kind=8)) iq_1; D.736_17 = D.735_16 + -1; g1[D.736_17] = vdot_15; iq_19 = iq_1 + 1; # DEBUG iq => iq_19 if (iq_1 == 4) goto <bb 4>; else goto <bb 3>; <bb 4>: dummy (&g1); return; }