c/8281: Segfault when compiling for ultrasparc

Christian Ehrhardt ehrhardt@mathematik.uni-ulm.de
Wed Nov 27 07:15:00 GMT 2002


http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8281

Hi,

I can confirm this on 3.2.1, it seems to be fixed with 3.3. With 3.2 I
get the following ICE for my reduced testcase:

elbereth$ gcc -O2 -c -fPIC -mcpu=ultrasparc 8281.c 
8281.c: In function `__ieee754_pow':
8281.c:43: insn does not satisfy its constraints:
(insn 249 44 47 (set (reg:DI 36 %f4)
        (reg/v:DI 64 %f32 [110])) 58 {*movdi_insn_sp32_v9} (nil)
    (nil))
8281.c:43: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8369
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

The reduced testcase (sorry still 43 lines) is below. There's not a
single line that can be removed without the ice going away. Compile
with gcc -O2 -c -fPIC -mcpu=ultrasparc.

static const double
bp = 1.0,
dp_l[] = { 0.0};
double __ieee754_pow(double x, double y)
{
	union {
		int lo;
		double d;
	}uz;
        double y1,t1,p_h,t,z;
        double z_h,z_l,p_l;
        double t2,r,s,u,v,w;
        int i = 0;

        double s_h,t_h;
        double s2,s_l,t_l;


            v = 1.0/(v+bp);
	    uz.d = s_h = s = u*v;
            uz.lo = 0;
            s_h = uz.d;
            uz.d = t_h;
	    uz.lo = 3;
            t_h = uz.d;
            s_l = v*((u-s_h*t_h)-s_h*t_l);
            s2 = s*s;
            r = s2* s2* (1.1+s2*(1.2+s2*(1.3+s2*(1.4+s2*(1.5+s2*1.6)))));
            s2 = s_h*s_h;
            uz.lo = 0;
            t_h = uz.d;
            t_l = r-((t_h-3.0)-s2);
            v = s_l*t_h+t_l*s;
            p_l = v-(p_h-u);
            z_h = bp *p_h;
            z_l = bp*p_h+p_l*1.0+dp_l[i];
            t = (double)i;
            t1 = (((bp+z_l)+bp)+t);
            t2 = z_l-(((t1-t)-bp)-z_h);
        p_l = (y-y1)*t1+y*t2;
        z = p_l+p_h;
        return s*z;
}

-- 
THAT'S ALL FOLKS!



More information about the Gcc-bugs mailing list