OSDN Git Service

* tinfo2.cc (fast_compare): Remove.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Oct 1998 18:29:36 +0000 (18:29 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Oct 1998 18:29:36 +0000 (18:29 +0000)
(before): Just use strcmp.
* tinfo.cc (operator==): Just use strcmp.
* decl.c (grokfndecl): Don't check for linkage in `extern "C"'
declarations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23057 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/tinfo.cc
gcc/cp/tinfo2.cc

index 2a59ec0..053fb4b 100644 (file)
@@ -1,3 +1,14 @@
+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>
 
        * cp-tree.h (specializations_of_same_template_p): Remove.
index 49c24db..91569d0 100644 (file)
@@ -8024,7 +8024,8 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
       t = no_linkage_check (TREE_TYPE (decl));
       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);
          else
            cp_pedwarn ("non-local function `%#D' uses local type `%T'",
index 6de8055..23750ac 100644 (file)
@@ -28,6 +28,7 @@
 #pragma implementation "typeinfo"
 
 #include <stddef.h>
+#include <string.h>
 #include "tinfo.h"
 #include "new"                 // for placement new
 
@@ -43,7 +44,7 @@ std::type_info::
 bool type_info::
 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
index c19cf60..e4d78fd 100644 (file)
 // the executable file might be covered by the GNU General Public License.
 
 #include <stddef.h>
+#include <string.h>
 #include "tinfo.h"
 #include "new"                 // for placement new
 
 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
 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.