aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2000-08-11 09:28:01 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2000-08-11 09:28:01 +0000
commitfd037e0d44bb1864f21b9797133b129a7f1f1222 (patch)
tree3869daa04d4112bde6e7cbc1307a6c5abaefc8b7 /gcc
parent9104081d7828eead6bc7ed37db864ebbf0876918 (diff)
downloadgcc-fd037e0d44bb1864f21b9797133b129a7f1f1222.zip
gcc-fd037e0d44bb1864f21b9797133b129a7f1f1222.tar.gz
gcc-fd037e0d44bb1864f21b9797133b129a7f1f1222.tar.bz2
decl2.c (build_expr_from_tree, [...]): Build explicit TEMPLATE_ID_EXPR args.
* decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build explicit TEMPLATE_ID_EXPR args. (build_expr_from_tree, case CALL_EXPR): Likewise. From-SVN: r35629
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl2.c18
2 files changed, 22 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ab9264e..9857169 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
+ * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
+ explicit TEMPLATE_ID_EXPR args.
+ (build_expr_from_tree, case CALL_EXPR): Likewise.
+
+2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
+
* decl.c (check_tag_decl): Diagnose typename's which don't
declare anything.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index cf1feb6..c968bcb 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -4116,10 +4116,17 @@ build_expr_from_tree (t)
if (TREE_CODE (TREE_OPERAND (t, 0)) == SCOPE_REF)
{
tree ref = TREE_OPERAND (t, 0);
+ tree name = TREE_OPERAND (ref, 1);
+
+ if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
+ name = build_nt (TEMPLATE_ID_EXPR,
+ TREE_OPERAND (name, 0),
+ build_expr_from_tree (TREE_OPERAND (name, 1)));
+
return build_scoped_method_call
(build_expr_from_tree (TREE_OPERAND (t, 1)),
build_expr_from_tree (TREE_OPERAND (ref, 0)),
- TREE_OPERAND (ref, 1),
+ name,
build_expr_from_tree (TREE_OPERAND (t, 2)));
}
else
@@ -4151,9 +4158,16 @@ build_expr_from_tree (t)
if (TREE_CODE (TREE_OPERAND (t, 0)) == SCOPE_REF)
{
tree ref = TREE_OPERAND (t, 0);
+ tree name = TREE_OPERAND (ref, 1);
+
+ if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
+ name = build_nt (TEMPLATE_ID_EXPR,
+ TREE_OPERAND (name, 0),
+ build_expr_from_tree (TREE_OPERAND (name, 1)));
+
return build_member_call
(build_expr_from_tree (TREE_OPERAND (ref, 0)),
- TREE_OPERAND (ref, 1),
+ name,
build_expr_from_tree (TREE_OPERAND (t, 1)));
}
else