[Bug target/124137] [16 Regression] build doesn't finish after 4h+
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 18 14:28:48 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124137
--- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> ---
commit d96b9b689fbf892a4b51d5115a494ee846b0bbd2 (origin/master, origin/HEAD)
Author: Richard Biener <rguenther@suse.de>
Date: Wed Feb 18 10:05:02 2026 +0100
target/123137 - improve TLS call placement validity check
When we search for a point in an inseration candidate block that has
incoming live call clobbered regs we look for REG_DEAD notes of
those and indication of FLAGS reg becoming live. But we consider
insns like
(insn 807 805 6 2 (parallel [
(set (subreg:SI (reg:HI 509) 0)
(lshiftrt:SI (reg:SI 514)
(const_int 16 [0x10])))
(clobber (reg:CC 17 flags))
])
"/home/packages/tmp/onednn-3.9.1+ds/src/cpu/x64/brgemm/jit_brgemm_amx_uker.cpp":1891:25
1213 {*lshrsi3_1}
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_DEAD (reg:SI 514)
(nil))))
making the FLAGS_REG live despite the REG_UNUSED note or the setter
being a CLOBBER. The following optimizes this by in turn honoring
REG_UNUSED for FLAGS_REG, pruning it immediately again.
This reduces required expensive iteration to other candidate BBs,
reducing compile-time for the testcase in the PR from hours to 6s.
PR target/123137
* config/i386/i386-features.cc (ix86_emit_tls_call): Improve
local FLAGS_REG liveness calculation.
* g++.dg/torture/pr124137.C: New testcase.
More information about the Gcc-bugs
mailing list