[Bug rtl-optimization/115901] [15 regression] ICE when building coreutils-9.5 on arm64 with -O3 -flto -fno-vect-cost-model -ftrivial-auto-var-init=zero
sjames at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Jul 13 00:20:26 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115901
--- Comment #2 from Sam James <sjames at gcc dot gnu.org> ---
expr.i:
```
void mpz_tdiv_r();
void mpz_get_str();
void main() { mpz_tdiv_r(mpz_get_str); }
```
libcoreutils_a-mini-gmp-gnulib.i:
```
typedef long mp_limb_t;
int mpn_div_qr_invert___clz_c;
mp_limb_t mpn_div_qr_invert_d0, mpn_div_qr_invert___clz_x,
mpn_div_qr_1_preinv_qp_0, mpn_div_qr_1_preinv_nn, mpn_div_qr_1_preinv_q;
struct gmp_div_inverse mpz_tdiv_r_bi;
void __assert_fail();
typedef struct {
int _mp_size
} __mpz_struct;
struct gmp_div_inverse {
unsigned shift;
mp_limb_t d1, d0
} mpn_div_qr_invert(struct gmp_div_inverse *inv, long dn) {
if (dn) {
for (; mpn_div_qr_invert___clz_x; mpn_div_qr_invert___clz_c++)
;
inv->d1 = mpn_div_qr_invert___clz_c;
__assert_fail(inv->d1);
} else
inv->d0 = mpn_div_qr_invert_d0;
}
void mpn_div_qr_1_preinv(struct gmp_div_inverse *inv) {
__assert_fail();
__assert_fail(inv->shift);
while (mpn_div_qr_1_preinv_nn)
mpn_div_qr_1_preinv_qp_0 = mpn_div_qr_1_preinv_q;
}
void mpn_div_qr_preinv(struct gmp_div_inverse *inv) {
mpn_div_qr_1_preinv(inv);
if (inv->d0)
if (inv->d1)
__assert_fail();
}
void mpz_tdiv_r() {
__mpz_struct *d;
struct gmp_div_inverse inv;
mpn_div_qr_invert(&inv, d->_mp_size);
mpn_div_qr_preinv(&inv);
mpn_div_qr_1_preinv(&mpz_tdiv_r_bi);
}
```
That's straight from cvise so not tidied at all. I need to do some other bits
now. It should be doable to kill LTO dependence next
More information about the Gcc-bugs
mailing list