register spilling - why? (code inside)

274     #pragma unroll

275     for (int i = 0; i < 50; i++)

276     {

277         lambda_old = lambda;

278         lambda2 = lambda_old * lambda_old;// lambda^2

279         b = (lambda2 + C_2) * lambda_old; // b = lambda_old^3 + C_2*lambda_old

280         a = b + C_1;                      // a = lambda_old^3 + C_2*lambda_old + C_1

281         lambda = lambda_old - (a * lambda_old + C_0) / (2.0 * lambda2 * lambda_old + b + a);

282         //     = lambda_old - lambda_old^4 + C_2*lambda_old^2 + C_1*lambda_old + C_0

283         //                    ------------------------------------------------------

284         //                            4 * lambda^3 + 2 C_2*lambda^2 + C_1

285         if (fabs(lambda - lambda_old) < fabs(1.0e-6 * lambda)) break;

286     }

For some reason all the automatic variables (lambda_old, lambda, lambda2, b, a) are spilled into local memory. Any idea why?

What happens if you remove the #pragma unroll? Without a self-contained, compilable example it is impossible to diagnose what may be going on.