https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127552
Bug ID: 127552
Summary: [17 Regression] ICE in decompose, at wide-int.h:1049
since r17-4511-g885ad73e630ca2
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: kocelfc at tutanota dot com
Target Milestone: ---
This came up while building imagemagick.
```
unsigned short a;
void b() {
(unsigned short) ((a >> 5 & 5) << 10);
}
```
~/gcc-installed/bin/gcc -c test.c
test.c: In function 'b':
test.c:3:1: internal compiler error: in decompose, at wide-int.h:1049
3 | (unsigned short) ((a >> 5 & 5) << 10);
| ^
0x2b164fe internal_error(char const*, ...)
../../gcc/gcc/diagnostic-global-context.cc:787
0xa62ecf fancy_abort(char const*, int, char const*)
../../gcc/gcc/diagnostics/context.cc:1813
0x95335e wi::int_traits<generic_wide_int<wide_int_ref_storage<false, false> >
>::decompose(long*, unsigned int, generic_wide_int<wide_int_ref_storage<false,
false> > const&)
../../gcc/gcc/wide-int.h:1049
0x1b91707 wi::int_traits<generic_wide_int<wide_int_ref_storage<false, false> >
>::decompose(long*, unsigned int, generic_wide_int<wide_int_ref_storage<false,
false> > const&)
../../gcc/gcc/wide-int.h:2326
0x1b91707 wide_int_ref_storage<false,
false>::wide_int_ref_storage<generic_wide_int<wide_int_ref_storage<false,
false> > >(generic_wide_int<wide_int_ref_storage<false, false> > const&,
unsigned int)
../../gcc/gcc/wide-int.h:1099
0x1b91707 generic_wide_int<wide_int_ref_storage<false, false>
>::generic_wide_int<generic_wide_int<wide_int_ref_storage<false, false> >
>(generic_wide_int<wide_int_ref_storage<false, false> > const&, unsigned int)
../../gcc/gcc/wide-int.h:855
0x1b91707 bool wi::ltu_p<generic_wide_int<wide_int_ref_storage<false, false> >,
generic_wide_int<wide_int_ref_storage<false, false> >
>(generic_wide_int<wide_int_ref_storage<false, false> > const&,
generic_wide_int<wide_int_ref_storage<false, false> > const&)
../../gcc/gcc/wide-int.h:2330
0x2072996 bool wi::leu_p<generic_wide_int<wide_int_ref_storage<false, false> >,
generic_wide_int<wide_int_ref_storage<false, false> >
>(generic_wide_int<wide_int_ref_storage<false, false> > const&,
generic_wide_int<wide_int_ref_storage<false, false> > const&)
../../gcc/gcc/wide-int.h:2372
0x2072996 generic_simplify_LSHIFT_EXPR(unsigned long, tree_code, tree_node*,
tree_node*, tree_node*)
/home/kostadin/gcc-build/gcc/generic-match-4.cc:12564
0xdf2b90 fold_binary_loc(unsigned long, tree_code, tree_node*, tree_node*,
tree_node*)
../../gcc/gcc/fold-const.cc:10965
0xdfb242 fold_build2_loc(unsigned long, tree_code, tree_node*, tree_node*,
tree_node*)
../../gcc/gcc/fold-const.cc:13801
0xcb609e do_narrow
../../gcc/gcc/convert.cc:453
0xcb7212 convert_to_integer_1
../../gcc/gcc/convert.cc:864
0xadfbe5 c_convert
../../gcc/gcc/c/c-convert.cc:148
0xac346e build_c_cast(unsigned long, tree_node*, tree_node*)
../../gcc/gcc/c/c-typeck.cc:7665
0xac4814 c_cast_expr(unsigned long, c_type_name*, tree_node*)
../../gcc/gcc/c/c-typeck.cc:7744
0xafc924 c_parser_cast_expression
../../gcc/gcc/c/c-parser.cc:10647
0xafcbb9 c_parser_binary_expression
../../gcc/gcc/c/c-parser.cc:10420
0xafe384 c_parser_conditional_expression
../../gcc/gcc/c/c-parser.cc:10110
0xafec83 c_parser_expr_no_commas
../../gcc/gcc/c/c-parser.cc:10023
/home/kostadin/gcc-installed/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1
-quiet -iprefix
/home/kostadin/gcc-installed/bin/../lib/gcc/x86_64-pc-linux-gnu/17.0.0/ test.c
-quiet -dumpbase test.c -dumpbase-ext .c -mtune=generic -march=x86-64 -o
/tmp/cczPkMHj.s
~/gcc-installed/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/home/kostadin/gcc-installed/bin/gcc
COLLECT_LTO_WRAPPER=/home/kostadin/gcc-installed/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --enable-languages=c,c++ --disable-bootstrap
--prefix=/home/kostadin/gcc-build/../gcc-installed --disable-nls CFLAGS='-O2
-ggdb3' CXXFLAGS='-O2 -ggdb3'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 17.0.0 20260922 (experimental) (GCC)