aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/using5.C17
5 files changed, 31 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index bc4eaf7..8c2e6a3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2003-08-01 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/9447
+ * decl2.c (do_class_using_decl): Set type to NULL_TREE.
+ * semantics.c (finish_expr_stmt): Do not convert to void in a
+ template.
+
2003-07-31 Nathan Sidwell <nathan@codesourcery.com>
* pt.c (coerce_template_parms): Refactor.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index bd51bd1..a8c6263 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -4096,7 +4096,7 @@ do_class_using_decl (tree decl)
my_friendly_assert (TREE_CODE (name) == IDENTIFIER_NODE, 980716);
- value = build_lang_decl (USING_DECL, name, unknown_type_node);
+ value = build_lang_decl (USING_DECL, name, NULL_TREE);
DECL_INITIAL (value) = TREE_OPERAND (decl, 0);
return value;
}
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index a94174a..de5b190 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -430,7 +430,7 @@ finish_expr_stmt (tree expr)
/* Remember the type of the expression. */
expr_type = TREE_TYPE (expr);
- if (stmts_are_full_exprs_p ())
+ if (!processing_template_decl && stmts_are_full_exprs_p ())
expr = convert_to_void (expr, "statement");
r = add_stmt (build_stmt (EXPR_STMT, expr));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 26e44a3..57e9802 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-01 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/9447
+ * g++.dg/template/using5.C: New test.
+
2003-07-31 Roger Sayle <roger@eyesopen.com>
* gcc.dg/builtins-27.c: New test case.
diff --git a/gcc/testsuite/g++.dg/template/using5.C b/gcc/testsuite/g++.dg/template/using5.C
new file mode 100644
index 0000000..096ddc0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/using5.C
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 31 Jul 2003 <nathan@codesourcery.com>
+
+// PR 9447. further test cases for dependent using decl
+
+template <typename T> struct Base;
+
+template <typename T> struct Derived : public Base<T> {
+ using Base<T>::i;
+
+ Derived() { i; }
+
+ int get_i() { return i.f(); }
+
+};