https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118651

            Bug ID: 118651
           Summary: [15 Regression] ICE: in tree_to_poly_uint64, at
                    tree.cc:3350 with invalid pointer passed to stringops
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zsojka at seznam dot cz
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu
            Target: x86_64-pc-linux-gnu

Created attachment 60273
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60273&action=edit
reduced testcase

The same can be observed at least with strncat() and memset(). The code is
technically valid at compile time, but UB in runtime.

Compiler output:
$ x86_64-pc-linux-gnu-gcc -O -march=graniterapids-d testcase.c 
during RTL pass: expand
testcase.c: In function 'foo':
testcase.c:6:10: internal compiler error: in tree_to_poly_uint64, at
tree.cc:3350
    6 |   return *(V *)__builtin_memmove(&v - 1, 0, 0);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x2de40a1 internal_error(char const*, ...)
        /repo/gcc-trunk/gcc/diagnostic-global-context.cc:517
0xef861d fancy_abort(char const*, int, char const*)
        /repo/gcc-trunk/gcc/diagnostic.cc:1722
0x902780 tree_to_poly_uint64(tree_node const*)
        /repo/gcc-trunk/gcc/tree.cc:3350
0x902780 tree_to_poly_uint64(tree_node const*)
        /repo/gcc-trunk/gcc/tree.cc:3348
0x16f69d1 bit_field_offset(tree_node const*)
        /repo/gcc-trunk/gcc/tree.h:5719
0x16f69d1 bit_field_ref_in_bounds_p
        /repo/gcc-trunk/gcc/tree-eh.cc:2662
0x16f69d1 tree_could_trap_p(tree_node*)
        /repo/gcc-trunk/gcc/tree-eh.cc:2715
0x11cbf47 set_mem_attributes_minus_bitpos(rtx_def*, tree_node*, int,
poly_int<1u, long>)
        /repo/gcc-trunk/gcc/emit-rtl.cc:2047
0x12060fc expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /repo/gcc-trunk/gcc/expr.cc:12381
0x1206e69 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier,
rtx_def**, bool)
        /repo/gcc-trunk/gcc/expr.cc:9521
0x1206e69 expand_expr(tree_node*, rtx_def*, machine_mode, expand_modifier)
        /repo/gcc-trunk/gcc/expr.h:323
0x1206e69 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /repo/gcc-trunk/gcc/expr.cc:11811
0x12097d5 expand_expr_real_gassign(gassign*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /repo/gcc-trunk/gcc/expr.cc:11190
0x12088c3 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /repo/gcc-trunk/gcc/expr.cc:11368
0x10c71b2 expand_expr(tree_node*, rtx_def*, machine_mode, expand_modifier)
        /repo/gcc-trunk/gcc/expr.h:323
0x10c71b2 expand_return
        /repo/gcc-trunk/gcc/cfgexpand.cc:4146
0x10c71b2 expand_gimple_stmt_1
        /repo/gcc-trunk/gcc/cfgexpand.cc:4255
0x10c71b2 expand_gimple_stmt
        /repo/gcc-trunk/gcc/cfgexpand.cc:4364
0x10c786f expand_gimple_basic_block
        /repo/gcc-trunk/gcc/cfgexpand.cc:6427
0x10ca336 execute
        /repo/gcc-trunk/gcc/cfgexpand.cc:7176
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.

$ x86_64-pc-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest-amd64/bin/x86_64-pc-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-20250125022813-r15-7205-gd0acb7b2b26d4f-checking-yes-rtl-df-extra-nobootstrap-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/15.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++
--enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra
--disable-bootstrap --with-cloog --with-ppl --with-isl
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu
--target=x86_64-pc-linux-gnu --with-ld=/usr/bin/x86_64-pc-linux-gnu-ld
--with-as=/usr/bin/x86_64-pc-linux-gnu-as --enable-libsanitizer
--disable-libstdcxx-pch
--prefix=/repo/gcc-trunk//binary-trunk-20250125022813-r15-7205-gd0acb7b2b26d4f-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.0.1 20250125 (experimental) (GCC)

Reply via email to