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)

Reply via email to