https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126814
Zhendong Su <zhendong.su at inf dot ethz.ch> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |zhendong.su at inf dot ethz.ch
--- Comment #4 from Zhendong Su <zhendong.su at inf dot ethz.ch> ---
Another reproducer at -Os:
[534] % gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-trunk/configure --disable-bootstrap
--enable-checking=yes --prefix=/local/suz-local/software/local/gcc-trunk
--enable-sanitizers --enable-languages=c,c++,lto --disable-werror
--disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 17.0.0 20260812 (experimental) [master r17-1628-gd1c12591336] (GCC)
[535] %
[535] % gcctk -Os -c small.c
during RTL pass: expand
small.c: In function ‘m’:
small.c:9:6: internal compiler error: in fill_block_cache, at
gimple-range-cache.cc:1658
9 | void m() {
| ^
0x27c95ab internal_error(char const*, ...)
../../gcc-trunk/gcc/diagnostic-global-context.cc:787
0xa2dc61 fancy_abort(char const*, int, char const*)
../../gcc-trunk/gcc/diagnostics/context.cc:1813
0x844980 ranger_cache::fill_block_cache(tree_node*, basic_block_def*,
basic_block_def*)
../../gcc-trunk/gcc/gimple-range-cache.cc:1658
0xe2d8b7 ranger_cache::block_range(vrange&, basic_block_def*, tree_node*, bool)
../../gcc-trunk/gcc/gimple-range-cache.cc:1397
0xe2352e gimple_ranger::range_on_entry(vrange&, basic_block_def*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:189
0xe24bcf gimple_ranger::range_on_entry(vrange&, basic_block_def*, tree_node*)
../../gcc-trunk/gcc/tree.h:3830
0xe24bcf gimple_ranger::range_on_exit(vrange&, basic_block_def*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:231
0xe251b7 gimple_ranger::range_on_exit(vrange&, basic_block_def*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:292
0xe251b7 gimple_ranger::range_on_edge(vrange&, edge_def*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:279
0xe32058 fold_using_range::range_of_phi(vrange&, gphi*, fur_source&)
../../gcc-trunk/gcc/gimple-range-fold.cc:1201
0xe35f38 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
../../gcc-trunk/gcc/gimple-range-fold.cc:700
0xe20374 gimple_ranger::fold_range_internal(vrange&, gimple*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:303
0xe20374 gimple_ranger::prefill_stmt_dependencies(tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:494
0xe20bea gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:363
0xe23d23 gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:315
0xe23d23 gimple_ranger::range_of_expr(vrange&, tree_node*, gimple*)
../../gcc-trunk/gcc/gimple-range.cc:124
0xd89522 tree_single_nonnegative_p(tree_node*, int)
../../gcc-trunk/gcc/fold-const.cc:14700
0xe3073b fold_using_range::range_of_call(vrange&, gcall*, fur_source&)
../../gcc-trunk/gcc/gimple-range-fold.cc:1330
0xe36248 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
../../gcc-trunk/gcc/gimple-range-fold.cc:702
0xe3690c fold_range(vrange&, gimple*, range_query*)
../../gcc-trunk/gcc/gimple-range-fold.cc:321
/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1
-quiet -I /usr/local/include -I /local/suz-local/software/local/include
-imultiarch x86_64-linux-gnu -iprefix
/local/home/suz/suz-local/software/local/gcc-trunk/bin/../lib/gcc/x86_64-pc-linux-gnu/17.0.0/
small.c -quiet -dumpbase small.c -dumpbase-ext .c -mtune=generic -march=x86-64
-Os -o /tmp/ccRq4BEM.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.
[536] %
[536] % cat small.c
long a, c;
int f, j;
float g, *h, **i;
float fmodf(float, float);
long b(long k) {
__int128 d = k - a, e = -d;
return e;
}
void m() {
i = &h;
do {
*i = &g;
c = f;
j = c >> 2;
g = j;
*h = fmodf(g, g) + g;
} while (b((g ? : 8020979276165518) - ((long)j >> 52)));
}