90th Cygnus<->FSF quick merge

From-SVN: r13612
This commit is contained in:
Jason Merrill 1997-02-06 19:32:49 +00:00 committed by Mike Stump
parent 1b84b6f8a1
commit 312e7d50dd
3 changed files with 45 additions and 27 deletions

View File

@ -1,7 +1,17 @@
Tue Feb 4 11:28:24 1997 Jason Merrill <jason@yorick.cygnus.com>
* pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
* pt.c (tsubst): Put it back for -fno-ansi-overloading.
Mon Feb 3 18:41:12 1997 Jason Merrill <jason@yorick.cygnus.com>
* pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
smashes together template and non-template decls of the same
signature.
Thu Jan 30 19:18:00 1997 Jason Merrill <jason@yorick.cygnus.com>
* decl.c (lookup_name_real): Also build a TYPENAME_TYPE for nested
classes.
* pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
Wed Jan 29 11:40:35 1997 Brendan Kehoe <brendan@lisa.cygnus.com>

View File

@ -1,7 +1,30 @@
// Implementation file for the -*- C++ -*- dynamic memory management header.
// Copyright (C) 1996 Free Software Foundation
// This file is part of GNU CC.
// GNU CC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// GNU CC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with GNU CC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
// As a special exception, if you link this library with other files,
// some of which are compiled with GCC, to produce an executable,
// this library does not by itself cause the resulting executable
// to be covered by the GNU General Public License.
// This exception does not however invalidate any other reasons why
// the executable file might be covered by the GNU General Public License.
#pragma implementation "new"
#include "new"

View File

@ -1483,7 +1483,7 @@ tsubst (t, args, nargs, in_decl)
/* We do NOT check for matching decls pushed separately at this
point, as they may not represent instantiations of this
template, and in any case are considered separate under the
discrete model. */
discrete model. Instead, see add_maybe_template. */
r = copy_node (t);
copy_lang_decl (r);
@ -1542,7 +1542,7 @@ tsubst (t, args, nargs, in_decl)
grok_op_properties (r, DECL_VIRTUAL_P (r), DECL_FRIEND_P (r));
/* Look for matching decls for the moment. */
if (! member)
if (! member && ! flag_ansi_overloading)
{
tree decls = lookup_name_nonclass (DECL_NAME (t));
tree d = NULL_TREE;
@ -2747,31 +2747,16 @@ unify (tparms, targs, ntparms, parm, arg, nsubsts, strict)
case TEMPLATE_CONST_PARM:
(*nsubsts)++;
idx = TEMPLATE_CONST_IDX (parm);
if (targs[idx] == arg)
return 0;
else if (targs[idx])
if (targs[idx])
{
tree t = targs[idx];
if (TREE_CODE (t) == TREE_CODE (arg))
switch (TREE_CODE (arg))
{
case INTEGER_CST:
if (tree_int_cst_equal (t, arg))
return 0;
break;
case REAL_CST:
if (REAL_VALUES_EQUAL (TREE_REAL_CST (t), TREE_REAL_CST (arg)))
return 0;
break;
/* STRING_CST values are not valid template const parms. */
default:
;
}
/* else we get two different bindings, so deduction fails. */
return 1;
int i = cp_tree_equal (targs[idx], arg);
if (i == 1)
return 0;
else if (i == 0)
return 1;
else
my_friendly_abort (42);
}
/* else if (typeof arg != tparms[idx])
return 1;*/
targs[idx] = copy_to_permanent (arg);
return 0;