aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1999-08-03 10:18:13 +0000
committerJason Merrill <jason@gcc.gnu.org>1999-08-03 06:18:13 -0400
commit074917ba5c63df7b0eaea25715f2cadf20da9e24 (patch)
treefc5b72376c5a45ba80a3efc425913b97b79e58fd
parent778e067718c75bbc3e5ec52c56cad00e0f4d3604 (diff)
downloadgcc-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
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/call.c2
-rw-r--r--gcc/cp/decl2.c6
-rw-r--r--gcc/cp/lex.c1
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: