https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737
Ilya Zakharevich <nospam-abuse at ilyaz dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nospam-abuse at ilyaz dot org --- Comment #3 from Ilya Zakharevich <nospam-abuse at ilyaz dot org> --- Another occurrence: cc -c -I pari-2.3.5/src -I pari-2.3.5/src/headers -I pari-2.3.5/src -I ./libPARI -I ../pari-2.3.5/src -I ../pari-2.3.5/src/headers -I ../pari-2.3.5/src/graph -I . -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"\" -DXS_VERSION=\"\" -fPIC -DPLOT_IS_TUNABLE -DHAS_STAT -DHAS_OPENDIR -DASMINLINE -DGCC_INLINE -DDYNAMIC_PLOTTING -o trans2.o ../pari-2.3.5/src/basemath/trans2.c during RTL pass: split1 ../pari-2.3.5/src/basemath/trans2.c: In function âÂÂgasinâÂÂ: ../pari-2.3.5/src/basemath/trans2.c:214:1: internal compiler error: Segmentation fault 214 | } | ^ This was extracted from the remote testing report: https://www.cpantesters.org/cpan/report/cdb99a16-b09c-11ec-abe2-d569c5ce77ec (This is “remote testing”, so this report is “as good as it gets”; I cannot provide more details than in the report above.) To reproduce: one should get and untar https://cpan.metacpan.org/authors/id/I/IL/ILYAZ/modules/Math-Pari-2.030522a.tar.gz then run (in the extracted directory) perl Makefile.PL make ⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜ In fact, I can also produce the text of the subroutine, and how it is preprocessed (on MY machine, with gcc 4.9.3): GEN gasin(GEN x, long prec) { long sx; pari_sp av; GEN a, y, p1; switch(typ(x)) { case t_REAL: sx = signe(x); if (!sx) return real_0_bit(expo(x)); if (absrnz_egal1(x)) { /* |x| = 1 */ if (sx > 0) return Pi2n(-1, lg(x)); /* 1 */ y = Pi2n(-1, lg(x)); setsigne(y, -1); return y; /* -1 */ } if (expo(x) < 0) return mpasin(x); y = cgetg(3,t_COMPLEX); gel(y,1) = Pi2n(-1, lg(x)); gel(y,2) = mpach(x); if (sx < 0) { setsigne(y[1],-signe(y[1])); setsigne(y[2],-signe(y[2])); } return y; case t_COMPLEX: av = avma; return gerepilecopy(av, mulcxmI(gash(mulcxI(x), prec))); case t_INTMOD: case t_PADIC: pari_err(typeer,"gasin"); default: av = avma; if (!(y = toser_i(x))) break; if (gcmp0(y)) return gcopy(y); /* lg(y) > 2*/ if (valp(y) < 0) pari_err(negexper,"gasin"); p1 = gsubsg(1,gsqr(y)); if (gcmp0(p1)) { GEN t = Pi2n(-1,prec); if (gsigne(gel(y,2)) < 0) setsigne(t, -1); return gerepileupto(av, scalarser(t, varn(y), valp(p1)>>1)); } p1 = gdiv(derivser(y), gsqrt(p1,prec)); a = integ(p1,varn(y)); if (!valp(y)) a = gadd(a, gasin(gel(y,2),prec)); return gerepileupto(av, a); } return transc(gasin,x,prec); } ⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜⁜ Proprocessed (with gcc v4.9.3) GEN gasin(GEN x, long prec) { long sx; pari_sp av; GEN a, y, p1; switch(((long)(((pari_ulong)((x)[0])) >> (32 - 7)))) { case t_REAL: sx = (((long)((x)[1])) >> (32 - 2)); if (!sx) return real_0_bit(((long) ((((pari_ulong)((x)[1])) & ((1UL<<(32 - 2))-1)) - (1UL<<((32 - 2)-1))))); if (absrnz_equal1(x)) { if (sx > 0) return Pi2n(-1, ((long)(((pari_ulong)((x)[0])) & ((1UL<<(32 - 1 - 7))-1)))); y = Pi2n(-1, ((long)(((pari_ulong)((x)[0])) & ((1UL<<(32 - 1 - 7))-1)))); (((pari_ulong*)(y))[1]= (((pari_ulong*)(y))[1]&(~(~((1UL<<(32 - 2)) - 1)))) | (pari_ulong)(((pari_ulong)(-1)) << (32 - 2))); return y; } if (((long) ((((pari_ulong)((x)[1])) & ((1UL<<(32 - 2))-1)) - (1UL<<((32 - 2)-1)))) < 0) return mpasin(x); y = cgetg(3,t_COMPLEX); (((GEN*) (y))[1]) = Pi2n(-1, ((long)(((pari_ulong)((x)[0])) & ((1UL<<(32 - 1 - 7))-1)))); (((GEN*) (y))[2]) = mpacosh(x); if (sx < 0) togglesign((((GEN*) (y))[1])); else togglesign((((GEN*) (y))[2])); return y; case t_COMPLEX: if (ismpzero((((GEN*) (x))[2]))) return gasin((((GEN*) (x))[1]), prec); av = avma; return gerepilecopy(av, mulcxmI(gasinh(mulcxI(x), prec))); default: av = avma; if (!(y = toser_i(x))) break; if (gequal0(y)) return gerepilecopy(av, y); if (((long) ((((pari_ulong)((y)[1])) & ((1UL<<(32 - 2 - 14))-1)) - (1UL<<((32 - 2 - 14)-1)))) < 0) pari_err_DOMAIN("asin","valuation", "<", gen_0, x); p1 = gsubsg(1,gsqr(y)); if (gequal0(p1)) { GEN t = Pi2n(-1,prec); if (gsigne((((GEN*) (y))[2])) < 0) (((pari_ulong*)(t))[1]= (((pari_ulong*)(t))[1]&(~(~((1UL<<(32 - 2)) - 1)))) | (pari_ulong)(((pari_ulong)(-1)) << (32 - 2))); return gerepileupto(av, scalarser(t, ((long)((((pari_ulong)((y)[1]))&(((1UL<<14)-1)<<(32 - 2 - 14))) >> (32 - 2 - 14))), ((long) ((((pari_ulong)((p1)[1])) & ((1UL<<(32 - 2 - 14))-1)) - (1UL<<((32 - 2 - 14)-1))))>>1)); } p1 = gdiv(derivser(y), gsqrt(p1,prec)); a = integser(p1); if (!((long) ((((pari_ulong)((y)[1])) & ((1UL<<(32 - 2 - 14))-1)) - (1UL<<((32 - 2 - 14)-1))))) a = gadd(a, gasin((((GEN*) (y))[2]),prec)); return gerepileupto(av, a); } return trans_eval("asin",gasin,x,prec); }