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;
}