https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125487
Bug ID: 125487
Summary: internal compiler error: in DECL_FUNCTION_CODE, at
tree.h:4484 on sizeof ternary involving
__builtin_is_constant_evaluated()
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: lu.maltsis at postgrad dot manchester.ac.uk
Target Milestone: ---
```sh
$ gcc /tmp/bug.cpp
/tmp/bug.cpp: In function ‘int main()’:
/tmp/bug.cpp:4:51: internal compiler error: in DECL_FUNCTION_CODE, at
tree.h:4484
4 | return sizeof(__builtin_is_constant_evaluated() ? 0 : 0);
| ^
0x2925b1b internal_error(char const*, ...)
/home/user/software/gcc/slot-a/src/gcc/diagnostic-global-context.cc:787
0xac6559 fancy_abort(char const*, int, char const*)
/home/user/software/gcc/slot-a/src/gcc/diagnostics/context.cc:1813
0x8a4416 DECL_FUNCTION_CODE(tree_node const*)
/home/user/software/gcc/slot-a/src/gcc/tree.h:4484
0x8a4416 fold_builtin_0
/home/user/software/gcc/slot-a/src/gcc/builtins.cc:10621
0x8a4416 fold_builtin_n
/home/user/software/gcc/slot-a/src/gcc/builtins.cc:10988
0x10c40c5 fold(tree_node*)
/home/user/software/gcc/slot-a/src/gcc/fold-const.cc:13300
0xb1c944 fold_to_constant(tree_node*)
/home/user/software/gcc/slot-a/src/gcc/cp/constexpr.cc:11369
0xb3e337 maybe_constant_value(tree_node*, tree_node*, mce_value)
/home/user/software/gcc/slot-a/src/gcc/cp/constexpr.cc:11431
0xb6e9f0 cp_fully_fold
/home/user/software/gcc/slot-a/src/gcc/cp/cp-gimplify.cc:3249
0xcb799d cp_parser_question_colon_clause
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11877
0xcb23c9 cp_parser_assignment_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11993
0xcb71d5 cp_parser_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:12184
0xce232e cp_parser_primary_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:6740
0xcce511 cp_parser_postfix_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:8893
0xccaded cp_parser_unary_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:10616
0xcccd60 cp_parser_sizeof_operand
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:37418
0xccb879 cp_parser_unary_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:10265
0xcb0594 cp_parser_cast_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11531
0xcb13c3 cp_parser_binary_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11634
0xcb21c2 cp_parser_assignment_expression
/home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11987
/home/user/software/gcc/slot-a/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1plus
-quiet -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /tmp/bug.cpp -quiet -dumpdir
a- -dumpbase bug.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -o
/tmp/ccuHEvGp.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.
$ cat /tmp/bug.cpp
int main()
{
return sizeof(__builtin_is_constant_evaluated() ? 0 : 0);
}
```
Compiler Explorer Reproducer: https://godbolt.org/z/xb9jvGzGd
GCC Commit Hash: 29e4b7f
(https://github.com/gcc-mirror/gcc/commit/29e4b7f1100ad3dd611da6fc3314a41978c5fc25)
Preprocessed source:
```cpp
// Target: x86_64-pc-linux-gnu
// Configured with: /home/user/software/gcc/slot-a/src/configure
--prefix=/home/user/software/gcc/slot-a --enable-languages=c,c++
--disable-bootstrap --disable-multilib --with-gmp=/usr --with-mpfr=/usr
--with-mpc=/usr
// Thread model: posix
// Supported LTO compression algorithms: zlib zstd
// gcc version 17.0.0 20260525 (experimental) (GCC)
//
// /tmp/bug.cpp: In function ‘int main()’:
// /tmp/bug.cpp:4:51: internal compiler error: in DECL_FUNCTION_CODE, at
tree.h:4484
// 4 | return sizeof(__builtin_is_constant_evaluated() ? 0 : 0);
// | ^
// 0x2925b1b internal_error(char const*, ...)
// /home/user/software/gcc/slot-a/src/gcc/diagnostic-global-context.cc:787
// 0xac6559 fancy_abort(char const*, int, char const*)
// /home/user/software/gcc/slot-a/src/gcc/diagnostics/context.cc:1813
// 0x8a4416 DECL_FUNCTION_CODE(tree_node const*)
// /home/user/software/gcc/slot-a/src/gcc/tree.h:4484
// 0x8a4416 fold_builtin_0
// /home/user/software/gcc/slot-a/src/gcc/builtins.cc:10621
// 0x8a4416 fold_builtin_n
// /home/user/software/gcc/slot-a/src/gcc/builtins.cc:10988
// 0x10c40c5 fold(tree_node*)
// /home/user/software/gcc/slot-a/src/gcc/fold-const.cc:13300
// 0xb1c944 fold_to_constant(tree_node*)
// /home/user/software/gcc/slot-a/src/gcc/cp/constexpr.cc:11369
// 0xb3e337 maybe_constant_value(tree_node*, tree_node*, mce_value)
// /home/user/software/gcc/slot-a/src/gcc/cp/constexpr.cc:11431
// 0xb6e9f0 cp_fully_fold
// /home/user/software/gcc/slot-a/src/gcc/cp/cp-gimplify.cc:3249
// 0xcb799d cp_parser_question_colon_clause
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11877
// 0xcb23c9 cp_parser_assignment_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11993
// 0xcb71d5 cp_parser_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:12184
// 0xce232e cp_parser_primary_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:6740
// 0xcce511 cp_parser_postfix_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:8893
// 0xccaded cp_parser_unary_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:10616
// 0xcccd60 cp_parser_sizeof_operand
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:37418
// 0xccb879 cp_parser_unary_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:10265
// 0xcb0594 cp_parser_cast_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11531
// 0xcb13c3 cp_parser_binary_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11634
// 0xcb21c2 cp_parser_assignment_expression
// /home/user/software/gcc/slot-a/src/gcc/cp/parser.cc:11987
// -quiet -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /tmp/bug.cpp -quiet
-dumpdir a- -dumpbase bug.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64
-freport-bug -o - -frandom-seed=0 -fdump-noaddr
// Please submit a full bug report, with preprocessed source.
// Please include the complete backtrace with any bug report.
// See <https://gcc.gnu.org/bugs/> for instructions.
//
/home/user/software/gcc/slot-a/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1plus
-quiet -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /tmp/bug.cpp -quiet -dumpdir
a- -dumpbase bug.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64
-freport-bug -o - -frandom-seed=0 -fdump-noaddr
# 0 "/tmp/bug.cpp"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3
# 0 "<command-line>" 2
# 1 "/tmp/bug.cpp"
int main()
{
return sizeof(__builtin_is_constant_evaluated() ? 0 : 0);
}
```