diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1999-08-03 10:18:13 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1999-08-03 06:18:13 -0400 |
commit | 074917ba5c63df7b0eaea25715f2cadf20da9e24 (patch) | |
tree | fc5b72376c5a45ba80a3efc425913b97b79e58fd /gcc | |
parent | 778e067718c75bbc3e5ec52c56cad00e0f4d3604 (diff) | |
download | gcc-074917ba5c63df7b0eaea25715f2cadf20da9e24.zip gcc-074917ba5c63df7b0eaea25715f2cadf20da9e24.tar.gz gcc-074917ba5c63df7b0eaea25715f2cadf20da9e24.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/call.c | 2 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 6 | ||||
-rw-r--r-- | gcc/cp/lex.c | 1 |
4 files changed, 13 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a52ccf07..5232c72 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +1999-08-03 Jason Merrill <jason@yorick.cygnus.com> + + * 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 <khan@xraylith.wisc.edu> * decl.c (start_decl): Set attributes before duplicate_decls call. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index f9288a4..9cdfc75 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 cbc6c23..a841319 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 f9fc681..1bcb667 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: |