https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125745
Bug ID: 125745
Summary: [16/17 Regression] ICE with sanitizer in
cxx_eval_component_reference, at cp/constexpr.cc:5823
since r16-6431
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mjires at gcc dot gnu.org
CC: nshead at gcc dot gnu.org
Target Milestone: ---
Compiling reduced testcase g++.dg/cpp2a/constexpr-virtual7.C results in ICE
since r16-6431-gc388d56a889469.
$ cat constexpr-virtual7.C
struct X1 {
virtual void f();
};
struct : X1 {
int f() const { return 2; }
}
constexpr x2;
struct S {
int i;
S() { i = x2.f();}
};
$ g++ constexpr-virtual7.C -fsanitize=undefined
constexpr-virtual7.C: In constructor ‘S::S()’:
constexpr-virtual7.C:13:17: internal compiler error: in
cxx_eval_component_reference, at cp/constexpr.cc:6165
13 | S() { i = x2.f();}
| ~~~~^~
0x29c123d internal_error(char const*, ...)
/home/mjires/git/GCC/master/gcc/diagnostic-global-context.cc:787
0x29cc723 fancy_abort(char const*, int, char const*)
/home/mjires/git/GCC/master/gcc/diagnostics/context.cc:1813
0x8cabc3 cxx_eval_component_reference
/home/mjires/git/GCC/master/gcc/cp/constexpr.cc:6165
0x8c003b cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
/home/mjires/git/GCC/master/gcc/cp/constexpr.cc:10035
0x8d1f85 cxx_eval_outermost_constant_expr
/home/mjires/git/GCC/master/gcc/cp/constexpr.cc:11030
0x8db9f9 maybe_constant_value(tree_node*, tree_node*, mce_value)
/home/mjires/git/GCC/master/gcc/cp/constexpr.cc:11488
0x90597b cp_fold_non_odr_use_1
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3199
0x9154d9 cp_fold_maybe_rvalue
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3211
0x913e5d cp_fold
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3431
0x913386 cp_fold
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3866
0x915523 cp_fold_maybe_rvalue
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3212
0x91211c cp_fold
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3620
0x913386 cp_fold
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3866
0x9154e3 cp_fold_maybe_rvalue
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3212
0x91215f cp_fold
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3627
0x9115db cp_fold
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:3424
0x9140ed cp_fold_r
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:1640
0x180ceb4 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
/home/mjires/git/GCC/master/gcc/tree.cc:11742
0x909ac0 cp_fold_function_non_odr_use(tree_node*)
/home/mjires/git/GCC/master/gcc/cp/cp-gimplify.cc:1822
0x97d462 finish_function(bool)
/home/mjires/git/GCC/master/gcc/cp/decl.cc:20756
/home/mjires/built/master/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1plus -quiet
-D_GNU_SOURCE constexpr-virtual7.C -quiet -dumpdir a- -dumpbase
constexpr-virtual7.C -dumpbase-ext .C -mtune=generic -march=x86-64
-fsanitize=undefined -o /tmp/cc7RZmi4.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.
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/home/mjires/built/master/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/mjires/git/GCC/master/configure
--prefix=/home/mjires/built/master --disable-bootstrap
--enable-languages=c,c++,fortran,lto --disable-multilib --disable-libsanitizer
--enable-checking : (reconfigured) /home/mjires/git/GCC/master/configure
--prefix=/home/mjires/built/master --disable-bootstrap
--enable-languages=c,c++,fortran,lto --disable-multilib --disable-libsanitizer
--enable-checking : (reconfigured) /home/mjires/git/GCC/master/configure
--prefix=/home/mjires/built/master --disable-bootstrap --disable-multilib
--disable-libsanitizer --enable-checking --enable-languages=c,c++,fortran,lto
--no-create --no-recursion
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 17.0.0 20260611 (experimental) (GCC)