https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79377
Bug ID: 79377 Summary: [6/7 Regression] ICE with increment operator in -fpermissive mode Product: gcc Version: 7.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: reichelt at gcc dot gnu.org Target Milestone: --- The following code snippet (compiled with "-fpermissive") triggers an ICE since GCC 6.1.0: ===================================== struct A { A& operator++(); }; template<typename> void foo(A& a) { a++; } ===================================== bug.cc: In function 'void foo(A&)': bug.cc:8:4: warning: no 'operator++(int)' declared for postfix '++', trying prefix operator instead [-fpermissive] a++; ~^~ bug.cc:8:4: internal compiler error: in build_min_non_dep_op_overload, at cp/tree.c:2944 a++; ^~ 0x7d192a build_min_non_dep_op_overload(tree_code, tree_node*, tree_node*, ...) ../../gcc/gcc/cp/tree.c:2944 0x758c81 build_x_unary_op(unsigned int, tree_code, cp_expr, int) ../../gcc/gcc/cp/typeck.c:5490 0x79f980 finish_increment_expr(cp_expr, tree_code) ../../gcc/gcc/cp/semantics.c:2514 0x720389 cp_parser_postfix_expression ../../gcc/gcc/cp/parser.c:7057 0x72166d cp_parser_unary_expression ../../gcc/gcc/cp/parser.c:8098 0x7225c3 cp_parser_cast_expression ../../gcc/gcc/cp/parser.c:8775 0x722d17 cp_parser_binary_expression ../../gcc/gcc/cp/parser.c:8876 0x7235e4 cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:9163 0x727318 cp_parser_expression ../../gcc/gcc/cp/parser.c:9332 0x72c908 cp_parser_expression_statement ../../gcc/gcc/cp/parser.c:10880 0x7152cc cp_parser_statement ../../gcc/gcc/cp/parser.c:10696 0x7169cd cp_parser_statement_seq_opt ../../gcc/gcc/cp/parser.c:11022 0x716a9f cp_parser_compound_statement ../../gcc/gcc/cp/parser.c:10976 0x72abe3 cp_parser_function_body ../../gcc/gcc/cp/parser.c:21426 0x72abe3 cp_parser_ctor_initializer_opt_and_function_body ../../gcc/gcc/cp/parser.c:21464 0x733641 cp_parser_function_definition_after_declarator ../../gcc/gcc/cp/parser.c:26231 0x738e40 cp_parser_function_definition_from_specifiers_and_declarator ../../gcc/gcc/cp/parser.c:26143 0x738e40 cp_parser_init_declarator ../../gcc/gcc/cp/parser.c:19153 0x71297a cp_parser_single_declaration ../../gcc/gcc/cp/parser.c:26689 0x732c7c cp_parser_template_declaration_after_parameters ../../gcc/gcc/cp/parser.c:26293 Please submit a full bug report, [etc.] Although the correct operator is missing, the code is deemed valid in the "-fpermissive" mode, so I'm filing this under ice-on-valid-code.