https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121572
--- Comment #5 from Sergei Trofimovich <slyfox at gcc dot gnu.org> --- (In reply to H.J. Lu from comment #4) > Created attachment 62133 [details] > A patch > > Please test this. ICEs on `mpfr-4.2.2` when applied to master. `cvise` extracted this thing: // $ cat agm.c.c typedef enum { MPFR_RNDN } mpfr_rnd_t; typedef int mpfr_t[1]; long __gmpfr_emin, mpfr_agm_expo_0; _Thread_local long __gmpfr_emax; int mpfr_agm_compare, mpfr_agm___trans_tmp_1; mpfr_t mpfr_agm_u; void mpfr_mul(int *, int, int, mpfr_rnd_t); int mpfr_agm(int op1) { int op2 = 0; if (__builtin_expect(mpfr_agm_compare == 0, 0)) return 0; if (mpfr_agm_compare > 0) { int t = op1; op2 = t; } mpfr_agm_expo_0 = __gmpfr_emax; for (;;) { retry: mpfr_mul(mpfr_agm_u, op1, op2, MPFR_RNDN); if (0) goto retry; if (__builtin_expect(mpfr_agm___trans_tmp_1, 1)) break; } __gmpfr_emin = __gmpfr_emax; return 0; } Crashes as: $ gcc/xgcc -Bgcc -c agm.c.c -O2 -fPIC -Wall during RTL pass: x86_cse agm.c.c: In function ‘mpfr_agm’: agm.c.c:27:1: internal compiler error: in ix86_place_single_tls_call, at config/i386/i386-features.cc:3918 27 | } | ^ 0x25ef8f0 diagnostics::context::diagnostic_impl(rich_location*, diagnostics::metadata const*, diagnostics::option_id, char const*, __va_list_tag (*) [1], diagnostics::kind) ???:0 0x25e4672 internal_error(char const*, ...) ???:0 0x25ecdb0 fancy_abort(char const*, int, char const*) ???:0 0x1670cbc ix86_place_single_tls_call(rtx_def*, rtx_def*, x86_cse_kind, bitmap_head*, rtx_def*) ???:0 0x16774ec (anonymous namespace)::pass_x86_cse::execute(function*) ???:0