From: Jason Merrill Date: Tue, 3 Aug 1999 10:18:13 +0000 (+0000) Subject: lex.c (yyprint): Handle PFUNCNAME. X-Git-Tag: prereleases/libstdc++-2.92~11368 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=074917ba5c63df7b0eaea25715f2cadf20da9e24;p=thirdparty%2Fgcc.git lex.c (yyprint): Handle PFUNCNAME. * lex.c (yyprint): Handle PFUNCNAME. * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Only build_expr_from_tree on the args of a TEMPLATE_ID_EXPR. From-SVN: r28467 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a52ccf076a19..5232c7288599 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +1999-08-03 Jason Merrill + + * lex.c (yyprint): Handle PFUNCNAME. + + * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Only + build_expr_from_tree on the args of a TEMPLATE_ID_EXPR. + 1999-08-03 Mumit Khan * decl.c (start_decl): Set attributes before duplicate_decls call. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index f9288a43541f..9cdfc75c8816 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4146,7 +4146,7 @@ build_new_method_call (instance, name, args, basetype_path, flags) name = TREE_OPERAND (name, 0); if (TREE_CODE_CLASS (TREE_CODE (name)) == 'd') name = DECL_NAME (name); - else + else { if (TREE_CODE (name) == COMPONENT_REF) name = TREE_OPERAND (name, 1); diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index cbc6c23eb9d4..a841319d233e 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3996,7 +3996,7 @@ build_expr_from_tree (t) else { tree fn = TREE_OPERAND (t, 0); - + /* We can get a TEMPLATE_ID_EXPR here on code like: x->f<2>(); @@ -4007,7 +4007,9 @@ build_expr_from_tree (t) build_expr_from_tree. So, just use build_expr_from_tree when we really need it. */ if (TREE_CODE (fn) == TEMPLATE_ID_EXPR) - fn = build_expr_from_tree (fn); + fn = lookup_template_function + (TREE_OPERAND (fn, 0), + build_expr_from_tree (TREE_OPERAND (fn, 1))); return build_method_call (build_expr_from_tree (TREE_OPERAND (t, 1)), diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index f9fc681c05b0..1bcb667b092e 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -908,6 +908,7 @@ yyprint (file, yychar, yylval) case TYPENAME: case TYPESPEC: case PTYPENAME: + case PFUNCNAME: case IDENTIFIER_DEFN: case TYPENAME_DEFN: case PTYPENAME_DEFN: