diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e74dc1542c0..a5f99e6076c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-01-02 Nathan Sidwell + + PR c++/5116, c++/764 reversion + * call.c (build_new_op): Revert the instantiations. They are + incorrect. + 2002-01-02 Nathan Sidwell PR c++/5089 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 6672119d54c..190ddac20d8 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -3247,10 +3247,6 @@ build_new_op (code, flags, arg1, arg2, arg3) if (TREE_CODE (arg1) == OFFSET_REF) arg1 = resolve_offset_ref (arg1); arg1 = convert_from_reference (arg1); - if (CLASS_TYPE_P (TREE_TYPE (arg1)) - && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (arg1))) - /* Make sure the template type is instantiated now. */ - instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (arg1))); switch (code) { @@ -3273,18 +3269,12 @@ build_new_op (code, flags, arg1, arg2, arg3) if (TREE_CODE (arg2) == OFFSET_REF) arg2 = resolve_offset_ref (arg2); arg2 = convert_from_reference (arg2); - if (CLASS_TYPE_P (TREE_TYPE (arg2)) - && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (arg2))) - instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (arg2))); } if (arg3) { if (TREE_CODE (arg3) == OFFSET_REF) arg3 = resolve_offset_ref (arg3); arg3 = convert_from_reference (arg3); - if (CLASS_TYPE_P (TREE_TYPE (arg3)) - && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (arg3))) - instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (arg3))); } if (code == COND_EXPR) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e2fa439c13..d225074a5b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2002-01-02 Nathan Sidwell + * g++.dg/template/friend2.C: Remove as patch is reverted. + * g++.dg/warn/oldcast1.C: New test. * g++.dg/template/ptrmem1.C: New test. diff --git a/gcc/testsuite/g++.dg/template/friend2.C b/gcc/testsuite/g++.dg/template/friend2.C deleted file mode 100644 index de07518fbfd..00000000000 --- a/gcc/testsuite/g++.dg/template/friend2.C +++ /dev/null @@ -1,60 +0,0 @@ -// { dg-do run } - -// Copyright (C) 2001 Free Software Foundation, Inc. -// Contributed by Nathan Sidwell 31 Dec 2001 - -// PR 5116 Failed to find friend in overload resolution - -int wrong; -int right; - -struct Printer -{ - Printer &operator<< (bool a) - { - wrong++; - - return *this; - } - -}; - -struct Buggy {}; - -template struct Handle -{ - Handle(T* p) {} - - operator bool() const { return true; } - - friend Printer& operator<<(Printer& ostr, const Handle& r) - { - right++; - - return ostr; - - } -}; - -typedef Handle Buggy_h; - -Printer out; - -bool cmp (const Buggy_h& b1, const Buggy_h& b2) -{ - out << b1 << b2; - return false; -} - -int main() -{ - Buggy o; - - cmp (&o, &o); - - if (wrong) - return 1; - if (right != 2) - return 2; - return 0; -}