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

            Bug ID: 117139
           Summary: ICE with invalid constexpr expression (tree check:
                    expected integer_cst, have real_cst in get_len, at
                    tree.h:6509)
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sjames at gcc dot gnu.org
  Target Milestone: ---

Originally reported downstream in Gentoo at https://bugs.gentoo.org/941543.

```
constexpr int myconst = 2 * 2.5;
```

```
$ gcc /tmp/foo.c -c -O1 -std=c23
/tmp/foo.c:1:25: error: ‘constexpr’ integer initializer is not an integer
constant expression
    1 | constexpr int myconst = 2 * 2.5;
      |                         ^
/tmp/foo.c:1:1: internal compiler error: tree check: expected integer_cst, have
real_cst in get_len, at tree.h:6509
    1 | constexpr int myconst = 2 * 2.5;
      | ^~~~~~~~~
0x5b159bea403d internal_error(char const*, ...)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/diagnostic-global-context.cc:517
0x5b159b739809 tree_check_failed(tree_node const*, char const*, int, char
const*, ...)
        /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/tree.cc:9003
0x5b159a75afeb tree_check(tree_node const*, char const*, int, char const*,
tree_code)
        /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/tree.h:3921
0x5b159a75afeb wi::extended_tree<131072>::get_len() const
        /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/tree.h:6509
0x5b159a75afeb wi::int_traits<generic_wide_int<wi::extended_tree<131072> >
>::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<131072> >
const&)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/wide-int.h:1050
0x5b159a75afeb wide_int_ref_storage<true,
false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<131072> >
>(generic_wide_int<wi::extended_tree<131072> > const&, unsigned int)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/wide-int.h:1099
0x5b159a75afeb generic_wide_int<wide_int_ref_storage<true, false>
>::generic_wide_int<generic_wide_int<wi::extended_tree<131072> >
>(generic_wide_int<wi::extended_tree<131072> > const&, unsigned int)
        /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/wide-int.h:855
0x5b159a75afeb bool wi::lts_p<generic_wide_int<wi::extended_tree<131072> >,
generic_wide_int<wi::extended_tree<131072> >
>(generic_wide_int<wi::extended_tree<131072> > const&,
generic_wide_int<wi::extended_tree<131072> > const&)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/wide-int.h:2296
0x5b159a75afeb wi::binary_traits<generic_wide_int<wi::extended_tree<131072> >,
generic_wide_int<wi::extended_tree<131072> >,
wi::int_traits<generic_wide_int<wi::extended_tree<131072> > >::precision_type,
wi::int_traits<generic_wide_int<wi::extended_tree<131072> >
>::precision_type>::signed_predicate_result operator<
<generic_wide_int<wi::extended_tree<131072> >,
generic_wide_int<wi::extended_tree<131072> >
>(generic_wide_int<wi::extended_tree<131072> > const&,
generic_wide_int<wi::extended_tree<131072> > const&)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/wide-int.h:3811
0x5b159a75afeb tree_int_cst_lt(tree_node const*, tree_node const*)
        /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/tree.h:6675
0x5b159a75afeb int_fits_type_p(tree_node const*, tree_node const*)
        /usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/tree.cc:8219
0x5b159b50690f check_constexpr_init
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-typeck.cc:8650
0x5b159a774061 digest_init
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-typeck.cc:9096
0x5b159c88045b store_init_value(unsigned int, tree_node*, tree_node*,
tree_node*)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-typeck.cc:8390
0x5b159c0c2fe1 finish_decl(tree_node*, unsigned int, tree_node*, tree_node*,
tree_node*)
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-decl.cc:5843
0x5b159c84f8ed c_parser_declaration_or_fndef
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-parser.cc:2764
0x5b159c84eb9b c_parser_external_declaration
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-parser.cc:2060
0x5b159c84a6da c_parser_translation_unit
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-parser.cc:1914
0x5b159c84a6da c_parse_file()
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c/c-parser.cc:27348
0x5b159c83dca0 c_common_parse_file()
       
/usr/src/debug/sys-devel/gcc-15.0.9999/gcc-15.0.9999/gcc/c-family/c-opts.cc:1349
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://bugs.gentoo.org/> for instructions.
```

Reply via email to