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)

Reply via email to