https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127729
Bug ID: 127729
Summary: [17 Regression] ICE on llvm-22.1.8 during GIMPLE pass:
vrp : Segmentation fault since r17-4849
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: slyfox at gcc dot gnu.org
Target Milestone: ---
Observed ICE on llvm-22.1.8 from gcc-master, bisected down to r17-4849.
Not sure if it's identical to PR127719. Filing just in case.
Minimized example:
// $ cat bug.cc
enum E {};
bool getKnownMinValue();
struct TypeSize {
bool Scalable;
} getSizeInBits_SizeTable;
extern TypeSize SizeTable[];
void isKnownGT(TypeSize);
struct MVT {
E SimpleTy;
} V, LowerFCOPYSIGN___trans_tmp_10;
E getSizeInBits_e_0;
static void knownBitsGT(MVT e, MVT VT) {
TypeSize __trans_tmp_4, __trans_tmp_1;
switch (VT.SimpleTy)
case 0:
case 2:
__trans_tmp_1 = getSizeInBits_SizeTable;
switch (e.SimpleTy) {
case 0:
case 2:
case 3:
__builtin_unreachable();
default:
__trans_tmp_4 = SizeTable[e.SimpleTy];
}
isKnownGT(__trans_tmp_4);
isKnownGT(__trans_tmp_1);
}
static bool knownBitsLT(MVT e) {
switch (getSizeInBits_e_0)
case 2:
__builtin_unreachable();
switch (e.SimpleTy)
case 0:
case 2:
case 3:
__builtin_unreachable();
TypeSize LHS;
if (LHS.Scalable)
return getKnownMinValue();
return false;
}
bool LowerFCOPYSIGN_bl;
void LowerFCOPYSIGN() {
MVT __trans_tmp_12, __trans_tmp_11 = LowerFCOPYSIGN___trans_tmp_10,
__trans_tmp_7 = __trans_tmp_11, VT;
LowerFCOPYSIGN_bl = knownBitsLT(__trans_tmp_7);
if (LowerFCOPYSIGN_bl)
LowerFCOPYSIGN___trans_tmp_10 = V;
__trans_tmp_12 = LowerFCOPYSIGN___trans_tmp_10;
MVT __trans_tmp_8 = __trans_tmp_12;
knownBitsGT(__trans_tmp_8, VT);
}
$ gcc/xg++ -Bgcc -O2 -c /tmp/bug.cc
during GIMPLE pass: vrp
/tmp/bug.cc: In function ‘void LowerFCOPYSIGN()’:
/tmp/bug.cc:44:6: internal compiler error: Ошибка сегментирования
44 | void LowerFCOPYSIGN() {
| ^~~~~~~~~~~~~~
0x2daa75b diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
???:0
0x2d9c3c5 internal_error(char const*, ...)
???:0
0x14a33b5 crash_signal(int)
???:0
0x1951aaf dom_oracle::nearest_relations(tree_node*, basic_block_def*)
???:0
0x195555e dom_oracle::expand_frontier(dom_oracle::frontier_element,
basic_block_def*, relation_kind_t&)
???:0
0x19559a0 dom_oracle::relation_search(basic_block_def*, tree_node*, bitmap_head
const*, tree_node*, bitmap_head const*)
???:0
0x1955c74 dom_oracle::query(basic_block_def*, tree_node*, tree_node*)
???:0
0x194dad7 relation_oracle::query(edge_def*, tree_node*, tree_node*)
???:0
0x104c526 fold_using_range::range_of_phi(vrange&, gphi*, fur_source&)
???:0
0x10535a6 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&,
tree_node*)
???:0
0x103c3a6 gimple_ranger::fold_range_internal(vrange&, gimple*, tree_node*)
???:0
0x103d04b gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
???:0
0x103c07f gimple_ranger::range_on_entry(vrange&, basic_block_def*, tree_node*)
???:0
0x103f04a gimple_ranger::range_of_expr(vrange&, tree_node*, gimple*)
???:0
0x18c54ac remove_unreachable::remove_and_update_globals()
???:0
0x18c7714 execute_ranger_vrp(function*, bool)
???:0
0x18ca5ff (anonymous namespace)::pass_vrp::execute(function*)
???:0
gcc/cc1plus -quiet -iprefix /tmp/gb/gcc/../lib/gcc/x86_64-pc-linux-gnu/17.0.0/
-isystem gcc/include -isystem gcc/include-fixed -D_GNU_SOURCE /tmp/bug.cc
-quiet -dumpbase bug.cc -dumpbase-ext .cc -mtune=generic -march=x86-64 -O2 -o
/tmp/nix-shell-2731608-2438092084/ccurX8sv.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
$ gcc/xg++ -Bgcc -v
Reading specs from gcc/specs
COLLECT_GCC=gcc/xg++
COLLECT_LTO_WRAPPER=gcc/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/slyfox/dev/git/gcc/configure --disable-multilib
--disable-bootstrap --disable-lto --disable-libsanitizer
--enable-languages=c,c++ CFLAGS='-O1 -g0' CXXFLAGS='-O1 -g0' LDFLAGS='-O1 -g0'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 17.0.0 20261004 (experimental) (GCC)