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.
```