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)

Reply via email to