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

            Bug ID: 67161
           Summary: [6 Regression] ICE with a static_assert using our
                    internal __not/__or/__and traits
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ville.voutilainen at gmail dot com
                CC: jason at redhat dot com
  Target Milestone: ---

Created attachment 36151
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36151&action=edit
Preprocessed source

The static_assert in my forthcoming patch to implement make_array/to_array ICEs
when the front-end encounters (and fires) the static_assert in the
implementation. The static_assert looks like this:

    static_assert(__or_<
                  __not_<is_void<_Dest>>,
                  __and_<__not_<__is_reference_wrapper<decay_t<_Types>>>...>>
                  ::value,
                  "make_array cannot be used without an explicit target type "
                  "if any of the types given is a reference_wrapper");

g++ (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4) compiles and fires the static_assert
successfully, as did gcc 6 at least until July 13th, because at that time
I was able to run my make_array tests successfully, and I haven't modified
them since.

Preprocessed source code attached. Pardon me for not being able to
reduce it yet. Backtrace:

In file included from neg.cc:21:0:
Segmentation fault
     static_assert(__or_<
     ^
0xc7e44f crash_signal
        ../../gcc/toplev.c:352
0xefd3f6 contains_struct_check(tree_node const*, tree_node_structure_enum, char
const*, int, char const*)
        ../../gcc/tree.h:3227
0xefd3f6 int_cst_value(tree_node const*)
        ../../gcc/tree.c:10982
0x6be2b4 get_non_default_template_args_count
        ../../gcc/cp/error.c:202
0x6c7fa1 dump_template_argument_list
        ../../gcc/cp/error.c:211
0x6c31ad dump_decl
        ../../gcc/cp/error.c:1215
0x6c9f0e dump_template_parms
        ../../gcc/cp/error.c:1799
0x6cc32c dump_typename
        ../../gcc/cp/error.c:597
0x6c9f0e dump_template_parms
        ../../gcc/cp/error.c:1799
0x6c1d2c dump_type_prefix
        ../../gcc/cp/error.c:811
0x6c0012 dump_function_decl
        ../../gcc/cp/error.c:1540
0x6ccbd2 decl_to_string
        ../../gcc/cp/error.c:2946
0x6ccbd2 cp_printer
        ../../gcc/cp/error.c:3527
0x136b3da pp_format(pretty_printer*, text_info*)
        ../../gcc/pretty-print.c:612
0x136bcd0 pp_format_verbatim(pretty_printer*, text_info*)
        ../../gcc/pretty-print.c:672
0x136bda4 pp_verbatim(pretty_printer*, char const*, ...)
        ../../gcc/pretty-print.c:873
0x6bdf8a print_instantiation_full_context
        ../../gcc/cp/error.c:3309
0x6bdf8a maybe_print_instantiation_context
        ../../gcc/cp/error.c:3453
0x6c8dd3 cp_diagnostic_starter
        ../../gcc/cp/error.c:3145
0x13688bf diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*)
        ../../gcc/diagnostic.c:916
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

Reply via email to