diff options
author | Dodji Seketeli <dodji@gcc.gnu.org> | 2011-02-11 18:27:00 +0100 |
---|---|---|
committer | Dodji Seketeli <dodji@gcc.gnu.org> | 2011-02-11 18:27:00 +0100 |
commit | 1c31ca71a7923d16e6ccba733edf14db0b399be9 (patch) | |
tree | 534e733694d11ce3ec15911bf58220f2af194411 | |
parent | 61502ca83754695ad954c8872379ae566f8e21e9 (diff) | |
download | gcc-1c31ca71a7923d16e6ccba733edf14db0b399be9.zip gcc-1c31ca71a7923d16e6ccba733edf14db0b399be9.tar.gz gcc-1c31ca71a7923d16e6ccba733edf14db0b399be9.tar.bz2 |
Revert "Fix PR c++/47172"
gcc/cp/
* pt.c (finish_call_expr, dependent_type_p)
(type_dependent_expression_p): Revert the previous attempt to fix
PR c++/47172.
gcc/testsuite/
* g++.dg/template/inherit6.C: Reverted.
From-SVN: r170055
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/pt.c | 7 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 14 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/inherit6.C | 23 |
5 files changed, 3 insertions, 53 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 98c5668..c3f780a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,10 +1,3 @@ -2011-02-11 Dodji Seketeli <dodji@redhat.com> - - PR c++/47172 - * pt.c (finish_call_expr): Consider a call expression that has a - dependent "this" pointer as being dependent. Add comments. - (dependent_type_p, type_dependent_expression_p): Update comments. - 2011-02-09 Jason Merrill <jason@redhat.com> * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index a55a35a..d59f32a 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -17912,7 +17912,7 @@ dependent_type_p_r (tree type) } /* Returns TRUE if TYPE is dependent, in the sense of - [temp.dep.type]. Note that a NULL type is considered dependent. */ + [temp.dep.type]. */ bool dependent_type_p (tree type) @@ -18184,10 +18184,7 @@ value_dependent_expression_p (tree expression) } /* Returns TRUE if the EXPRESSION is type-dependent, in the sense of - [temp.dep.expr]. Note that an expression with no type is - considered dependent. Other parts of the compiler arrange for an - expression with type-dependent subexpressions to have no type, so - this function doesn't have to be fully recursive. */ + [temp.dep.expr]. */ bool type_dependent_expression_p (tree expression) diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index a941b3b..58a59ee 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2028,20 +2028,8 @@ finish_call_expr (tree fn, VEC(tree,gc) **args, bool disallow_virtual, if (processing_template_decl) { - /* If the call expression is dependent, build a CALL_EXPR node - with no type; type_dependent_expression_p recognizes - expressions with no type as being dependent. */ if (type_dependent_expression_p (fn) - || any_type_dependent_arguments_p (*args) - /* For a non-static member function, we need to specifically - test the type dependency of the "this" pointer because it - is not included in *ARGS even though it is considered to - be part of the list of arguments. Note that this is - related to CWG issues 515 and 1005. */ - || (TREE_CODE (fn) == FUNCTION_DECL - && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn) - && current_class_ref - && type_dependent_expression_p (current_class_ref))) + || any_type_dependent_arguments_p (*args)) { result = build_nt_call_vec (fn, *args); KOENIG_LOOKUP_P (result) = koenig_p; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fd9b806..fac5294 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -22,11 +22,6 @@ * gcc.dg/ucnid-8.c: Likewise. * Adapt dg-warning line number. -2011-02-11 Dodji Seketeli <dodji@redhat.com> - - PR c++/47172 - * g++.dg/template/inherit6.C: New test. - 2011-02-10 Uros Bizjak <ubizjak@gmail.com> * gcc.target/i386/parity-1.c: Use -march=k8. diff --git a/gcc/testsuite/g++.dg/template/inherit6.C b/gcc/testsuite/g++.dg/template/inherit6.C deleted file mode 100644 index 241a68e..0000000 --- a/gcc/testsuite/g++.dg/template/inherit6.C +++ /dev/null @@ -1,23 +0,0 @@ -// Origin PR c++/47172 -// { dg-options "-std=c++0x" } -// { dg-do compile } - -struct A -{ - int f() const; -}; - -template <class T> -struct B : A { }; - -template <class T> -struct C : B<T> -{ - void g(); -}; - -template <class T> -void C<T>::g() -{ - A::f(); -} |