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

            Bug ID: 93527
           Summary: Internal compiler error when static_assert concept
                    std::regular on class with variadic constrained
                    constructor.
           Product: gcc
           Version: c++-concepts
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pacoarjonilla at yahoo dot es
  Target Milestone: ---

Variations of the source code (not included) yield compiler errors in other GCC
files and also memory access violation.

GCC version:
gcc git commit 5a28e2727f718f14a2afccf16c4dda814af5b6f8
(master branch as of 2020/1/31)

System:
OpenSUSE Tumbleweed running on intel i7-8700K
$ uname -ra
Linux linux-fikn 5.4.14-1-default #1 SMP Thu Jan 23 08:54:47 UTC 2020 (fc4ea7a)
x86_64 x86_64 x86_64 GNU/Linux

$ gcc10git --version
gcc10git (GCC) 10.0.1 20200131 (experimental)


configuration options:
$ ../gcc/configure --disable-multilib --enable-languages=c++
--program-suffix=10git

Build command:
$ make -j 12


maybe related to bug 79917


Compiler command:
$ /usr/local/bin/g++10git -E -std=c++2a -o namidevel.pp.cc -c namidevel.cc

Compiler output:

../namidevel.cc:4:20: error: static assertion failed
    4 | static_assert(std::regular<curve>);
      |               ~~~~~^~~~~~~~~~~~~~
../namidevel.cc:4:20: note: constraints not satisfied
In file included from ../namiplot:10,
                 from ../namidevel.cc:1:
/usr/local/include/c++/10.0.1/concepts:288:15:   required for the satisfaction
of ‘__weakly_eq_cmp_with<curve, curve>’
/usr/local/include/c++/10.0.1/concepts:298:13:   required for the satisfaction
of ‘equality_comparable<curve>’
/usr/local/include/c++/10.0.1/concepts:289:4:   in requirements with
‘std::remove_reference_t<curve>& __t’, ‘std::remove_reference_t<curve>& __u’
/usr/local/include/c++/10.0.1/concepts:290:10: note: the required expression
‘(__t == __u)’ is invalid
  290 |    { __t == __u } -> boolean;
      |      ~~~~^~~~~~
/usr/local/include/c++/10.0.1/concepts:291:10: internal compiler error: in
move_fn_p, at cp/decl.c:14076
  291 |    { __t != __u } -> boolean;
      |      ~~~~^~~~~~
0x62720e move_fn_p(tree_node const*)
        ../../gcc/gcc/cp/decl.c:14076
0x885111 joust
        ../../gcc/gcc/cp/call.c:11150
0x88546c tourney
        ../../gcc/gcc/cp/call.c:11656
0x892edb build_new_op_1
        ../../gcc/gcc/cp/call.c:6250
0x89382d build_new_op(op_location_t const&, tree_code, int, tree_node*,
tree_node*, tree_node*, tree_node**, int)
        ../../gcc/gcc/cp/call.c:6546
0xa71e43 build_x_binary_op(op_location_t const&, tree_code, tree_node*,
tree_code, tree_node*, tree_code, tree_node**, int)
        ../../gcc/gcc/cp/typeck.c:4245
0xa09267 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../gcc/gcc/cp/pt.c:19293
0x9fb299 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:18622
0x8c9e26 diagnose_valid_expression
        ../../gcc/gcc/cp/constraint.cc:3143
0x8cfddb satisfy_constraint_r
        ../../gcc/gcc/cp/constraint.cc:3182
0x8d0218 satisfy_constraint
        ../../gcc/gcc/cp/constraint.cc:2599
0xa490f3 finish_static_assert(tree_node*, tree_node*, unsigned int, bool)
        ../../gcc/gcc/cp/semantics.c:9685
0x99eaf2 cp_parser_static_assert
        ../../gcc/gcc/cp/parser.c:14678
0x9d48f2 cp_parser_declaration
        ../../gcc/gcc/cp/parser.c:13377
0x9d506a cp_parser_translation_unit
        ../../gcc/gcc/cp/parser.c:4731
0x9d506a c_parse_file()
        ../../gcc/gcc/cp/parser.c:43696
0xae942b c_common_parse_file()
        ../../gcc/gcc/c-family/c-opts.c:1186
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to