Commit a321c384 by Jason Merrill

tinfo2.cc (fast_compare): Remove.

	* tinfo2.cc (fast_compare): Remove.
	(before): Just use strcmp.
	* tinfo.cc (operator==): Just use strcmp.
	* decl.c (grokfndecl): Don't check for linkage in `extern "C"'
	declarations.

From-SVN: r23057
parent 619aeb96
1998-10-13 Jason Merrill <jason@yorick.cygnus.com>
* tinfo2.cc (fast_compare): Remove.
(before): Just use strcmp.
* tinfo.cc (operator==): Just use strcmp.
1998-10-13 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
* decl.c (grokfndecl): Don't check for linkage in `extern "C"'
declarations.
1998-10-13 Mark Mitchell <mark@markmitchell.com> 1998-10-13 Mark Mitchell <mark@markmitchell.com>
* cp-tree.h (specializations_of_same_template_p): Remove. * cp-tree.h (specializations_of_same_template_p): Remove.
......
...@@ -8024,7 +8024,8 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals, ...@@ -8024,7 +8024,8 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
t = no_linkage_check (TREE_TYPE (decl)); t = no_linkage_check (TREE_TYPE (decl));
if (t) if (t)
{ {
if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t))) if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t))
&& DECL_LANGUAGE (decl) != lang_c)
cp_pedwarn ("non-local function `%#D' uses anonymous type", decl); cp_pedwarn ("non-local function `%#D' uses anonymous type", decl);
else else
cp_pedwarn ("non-local function `%#D' uses local type `%T'", cp_pedwarn ("non-local function `%#D' uses local type `%T'",
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#pragma implementation "typeinfo" #pragma implementation "typeinfo"
#include <stddef.h> #include <stddef.h>
#include <string.h>
#include "tinfo.h" #include "tinfo.h"
#include "new" // for placement new #include "new" // for placement new
...@@ -43,7 +44,7 @@ std::type_info:: ...@@ -43,7 +44,7 @@ std::type_info::
bool type_info:: bool type_info::
operator== (const type_info& arg) const operator== (const type_info& arg) const
{ {
return (&arg == this) || (fast_compare (name (), arg.name ()) == 0); return (&arg == this) || (strcmp (name (), arg.name ()) == 0);
} }
extern "C" void extern "C" void
......
...@@ -26,27 +26,16 @@ ...@@ -26,27 +26,16 @@
// the executable file might be covered by the GNU General Public License. // the executable file might be covered by the GNU General Public License.
#include <stddef.h> #include <stddef.h>
#include <string.h>
#include "tinfo.h" #include "tinfo.h"
#include "new" // for placement new #include "new" // for placement new
using std::type_info; using std::type_info;
// service function for comparing types by name.
static inline int
fast_compare (const char *n1, const char *n2) {
int c;
if (n1 == n2) return 0;
if (n1 == 0) return *n2;
else if (n2 == 0) return *n1;
c = (int)*n1++ - (int)*n2++;
return c == 0 ? strcmp (n1, n2) : c;
};
bool bool
type_info::before (const type_info &arg) const type_info::before (const type_info &arg) const
{ {
return fast_compare (name (), arg.name ()) < 0; return strcmp (name (), arg.name ()) < 0;
} }
// type info for pointer type. // type info for pointer type.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment