[C++ PATCH] PR c++/90590 Suppress warning for enumeration value not handled in switch warning

Matthew Beliveau mbelivea@redhat.com
Mon Jul 15 14:17:00 GMT 2019


Okay I kept the TYPE_MAIN_VARIANT and dropped the accidental new line!
Hopefully this should be fine!

On Fri, Jul 12, 2019 at 6:49 PM Marek Polacek <polacek@redhat.com> wrote:
>
> On Fri, Jul 12, 2019 at 02:38:59PM -0400, Marek Polacek wrote:
> > On Fri, Jul 12, 2019 at 02:34:37PM -0400, Matthew Beliveau wrote:
> > > @@ -1628,6 +1629,16 @@ c_do_switch_warnings (splay_tree cases, location_t switch_location,
> > >        if (cond && tree_int_cst_compare (cond, value))
> > >     continue;
> > >
> > > +      /* If the enumerator is defined in a system header and uses a reserved
> > > +    name, then we continue to avoid throwing a warning.  */
> > > +      location_t loc = DECL_SOURCE_LOCATION
> > > +       (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (type)));
> >
> > As I mentioned before, I wonder if we can get away without the
> > TYPE_MAIN_VARIANT here.
>
> Ah, without TYPE_MAIN_VARIANT there's this ICEs:
>
> /opt/notnfs/polacek/gcc/libstdc++-v3/src/c++11/debug.cc: In function ‘void {anonymous}::print_field({anonymous}::PrintContext&, const _Parameter&, const char*)’:
> /opt/notnfs/polacek/gcc/libstdc++-v3/src/c++11/debug.cc:791:5: internal compiler error: Segmentation fault
>   791 |     }
>       |     ^
> 0xf31def crash_signal
>         /opt/notnfs/polacek/gcc/gcc/toplev.c:326
> 0xaaa579 contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*)
>         /opt/notnfs/polacek/gcc/gcc/tree.h:3330
> 0xaaa579 c_do_switch_warnings(splay_tree_s*, unsigned int, tree_node*, tree_node*, bool)
>         /opt/notnfs/polacek/gcc/gcc/c-family/c-warn.c:1634
> 0x8ab61f pop_switch()
>         /opt/notnfs/polacek/gcc/gcc/cp/decl.c:3567
> 0x9e0af4 finish_switch_stmt(tree_node*)
>         /opt/notnfs/polacek/gcc/gcc/cp/semantics.c:1229
> 0x95764d cp_parser_selection_statement
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:11964
> 0x95764d cp_parser_statement
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:11186
> 0x958770 cp_parser_statement_seq_opt
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:11667
> 0x958847 cp_parser_compound_statement
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:11621
> 0x971990 cp_parser_function_body
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:22651
> 0x971990 cp_parser_ctor_initializer_opt_and_function_body
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:22702
> 0x972216 cp_parser_function_definition_after_declarator
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:28016
> 0x972fae cp_parser_function_definition_from_specifiers_and_declarator
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:27932
> 0x972fae cp_parser_init_declarator
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:20288
> 0x954ecf cp_parser_simple_declaration
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:13546
> 0x9798a2 cp_parser_declaration
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:13243
> 0x97a46c cp_parser_declaration_seq_opt
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:13119
> 0x97a46c cp_parser_namespace_body
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:19335
> 0x97a46c cp_parser_namespace_definition
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:19313
> 0x9799b3 cp_parser_declaration
>         /opt/notnfs/polacek/gcc/gcc/cp/parser.c:13223
> 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.
>
> So seems like we need it after all.  Sorry about that.
>
> Marek
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr90590f.patch
Type: text/x-patch
Size: 2882 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20190715/fc855e06/attachment.bin>


More information about the Gcc-patches mailing list