Bug 68936 - [6 Regression] ICE: tree check: expected call_expr, have target_expr in build_min_non_dep_call_vec, at cp/tree.c:2744
Summary: [6 Regression] ICE: tree check: expected call_expr, have target_expr in build...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 6.0
: P1 normal
Target Milestone: 6.0
Assignee: Patrick Palka
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2015-12-16 10:43 UTC by Markus Trippelsdorf
Modified: 2016-01-16 03:02 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2015-12-16 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Trippelsdorf 2015-12-16 10:43:18 UTC
A very recent regression:

trippels@gcc2-power8 status % cat testwave_dll.ii
class A {};
struct predefined_macros {
  struct B {
    A (predefined_macros::*generator)();
  };
};
template <typename> class C {
  void m_fn1();
  predefined_macros predef;
};
template <typename ContextT> void C<ContextT>::m_fn1() {
predefined_macros::B m = (predef.*m.generator)();
}


trippels@gcc2-power8 status % g++ -c testwave_dll.ii
testwave_dll.ii: In member function ‘void C< <template-parameter-1-1> >::m_fn1()’:
testwave_dll.ii:12:48: internal compiler error: tree check: expected call_expr, have target_expr in build_min_non_dep_call_vec, at cp/tree.c:2744
 predefined_macros::B m = (predef.*m.generator)();
                                                ^

0x10d8c8f3 tree_check_failed(tree_node const*, char const*, int, char const*, ...)
        ../../gcc/gcc/tree.c:9606
0x103c4bcb tree_check
        ../../gcc/gcc/tree.h:2997
0x103c4bcb build_min_non_dep_call_vec(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>*)
        ../../gcc/gcc/cp/tree.c:2744
0x102a18d3 build_offset_ref_call_from_tree(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int)
        ../../gcc/gcc/cp/decl2.c:5001
0x102e5e3f cp_parser_postfix_expression
        ../../gcc/gcc/cp/parser.c:6812
0x102f2663 cp_parser_unary_expression
        ../../gcc/gcc/cp/parser.c:7901
0x102f36e3 cp_parser_cast_expression
        ../../gcc/gcc/cp/parser.c:8578
0x102f3ddb cp_parser_binary_expression
        ../../gcc/gcc/cp/parser.c:8680
0x102f4a5f cp_parser_assignment_expression
        ../../gcc/gcc/cp/parser.c:8968
0x102f5257 cp_parser_constant_expression
        ../../gcc/gcc/cp/parser.c:9236
0x102f5f17 cp_parser_initializer_clause
        ../../gcc/gcc/cp/parser.c:20681
0x102f8817 cp_parser_initializer
        ../../gcc/gcc/cp/parser.c:20622
0x1030fdab cp_parser_init_declarator
        ../../gcc/gcc/cp/parser.c:18494
0x1031054f cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:12278
0x10310c47 cp_parser_block_declaration
        ../../gcc/gcc/cp/parser.c:12147
0x103120df cp_parser_declaration_statement
        ../../gcc/gcc/cp/parser.c:11759
0x102e0b57 cp_parser_statement
        ../../gcc/gcc/cp/parser.c:10441
0x102e1597 cp_parser_statement_seq_opt
        ../../gcc/gcc/cp/parser.c:10719
0x102e176f cp_parser_compound_statement
        ../../gcc/gcc/cp/parser.c:10673
0x1030dfab cp_parser_function_body
        ../../gcc/gcc/cp/parser.c:20541
Comment 1 Markus Trippelsdorf 2015-12-16 10:49:42 UTC
Started with r231640:

commit d175f0193ed47b61eafd213ca2d3dde73f8f5996
Author: ppalka <ppalka@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Tue Dec 15 03:33:53 2015 +0000

    Fix PR c++/21802 (two-stage name lookup fails for operators)
Comment 2 Patrick Palka 2016-01-14 17:24:00 UTC
Thanks for the ping.
Comment 3 Patrick Palka 2016-01-16 02:28:11 UTC
Author: ppalka
Date: Sat Jan 16 02:27:36 2016
New Revision: 232461

URL: https://gcc.gnu.org/viewcvs?rev=232461&root=gcc&view=rev
Log:
Fix PR c++/68936

gcc/cp/ChangeLog:

	PR c++/68936
	* tree.c (build_min_non_dep_call_vec): Don't retain the
	KOENIG_LOOKUP_P flag of the non-dependent expression that's
	been built.
	(build_min_non_dep_op_overload): Instead, do it here.

gcc/testsuite/ChangeLog:

	PR c++/68936
	* g++.dg/template/pr68936.C: New test.


Added:
    trunk/gcc/testsuite/g++.dg/template/pr68936.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/tree.c
    trunk/gcc/testsuite/ChangeLog
Comment 4 Patrick Palka 2016-01-16 03:02:32 UTC
Fixed.