G++ no longer defines builtins that do not begin with __builtin.
authorMark Mitchell <mark@codesourcery.com>
Fri, 25 May 2001 01:30:57 +0000 (01:30 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Fri, 25 May 2001 01:30:57 +0000 (01:30 +0000)
* g++.old-deja/g++.abi/bitfields.C: Update accordingly.
* g++.old-deja/g++.brendand/misc13.C: Likewise.
* g++.old-deja/g++.law/builtin1.C: Likewise.
* g++.old-deja/g++.law/cvt2.C: Likewise.
* g++.old-deja/g++.mike/net5.C: Likewise.
* g++.old-deja/g++.other/builtins1.C: Likewise.
* g++.old-deja/g++.other/builtins2.C: Likewise.
* g++.old-deja/g++.other/builtins3.C: Likewise.
* g++.old-deja/g++.other/builtins4.C: Likewise.
* g++.old-deja/g++.other/inline8.C: Likewise.
* g++.old-deja/g++.robertl/eb39.C: Likewise.

From-SVN: r42554

14 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
gcc/testsuite/g++.old-deja/g++.brendan/misc13.C [deleted file]
gcc/testsuite/g++.old-deja/g++.law/builtin1.C
gcc/testsuite/g++.old-deja/g++.law/cvt2.C
gcc/testsuite/g++.old-deja/g++.mike/net5.C [deleted file]
gcc/testsuite/g++.old-deja/g++.other/builtins1.C
gcc/testsuite/g++.old-deja/g++.other/builtins2.C
gcc/testsuite/g++.old-deja/g++.other/builtins3.C
gcc/testsuite/g++.old-deja/g++.other/builtins4.C
gcc/testsuite/g++.old-deja/g++.other/inline21.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/inline8.C
gcc/testsuite/g++.old-deja/g++.robertl/eb39.C

index 8f74ba35143ed7b0a5cd3568841f0fe261e633ea..5dc9c2d428b8080b76cb63f3b7333343ced0c618 100644 (file)
@@ -1,3 +1,18 @@
+2001-05-24  Mark Mitchell  <mark@codesourcery.com>
+
+       G++ no longer defines builtins that do not begin with __builtin.
+       * g++.old-deja/g++.abi/bitfields.C: Update accordingly.
+       * g++.old-deja/g++.brendand/misc13.C: Likewise.
+       * g++.old-deja/g++.law/builtin1.C: Likewise.
+       * g++.old-deja/g++.law/cvt2.C: Likewise.
+       * g++.old-deja/g++.mike/net5.C: Likewise.
+       * g++.old-deja/g++.other/builtins1.C: Likewise.
+       * g++.old-deja/g++.other/builtins2.C: Likewise.
+       * g++.old-deja/g++.other/builtins3.C: Likewise.
+       * g++.old-deja/g++.other/builtins4.C: Likewise.
+       * g++.old-deja/g++.other/inline8.C: Likewise.
+       * g++.old-deja/g++.robertl/eb39.C: Likewise.
+
 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
 
        * g++.old-deja/g++.pt/using1.C: Adjust.
index 75b6571b1dc94ac585384a6d9de79f89e6e00bcf..57d06b36744e69e81a5a343ef26147ce169f093f 100644 (file)
@@ -55,7 +55,7 @@ check_bits (char *buf,
 #define CHECK_FIELD(AGGREGATE, FIELD, START_BIT, NUM_BITS, RVAL)          \
   do {                                                                    \
     AGGREGATE a__;                                                        \
-    memset (& a__, 0, sizeof (a__));                                      \
+    std::memset (& a__, 0, sizeof (a__));                                 \
     a__.FIELD = -1;                                                       \
     if (! check_bits ((char *) & a__, sizeof (a__), START_BIT, NUM_BITS)) \
       return RVAL;                                                        \
index b719c70a533d40b22592b7ca702527b58978147b..5fe1e140d6c382b5999aa1f12cb55de27e20fb5f 100644 (file)
@@ -1,4 +1,5 @@
 // Origin: Mark Mitchell <mark@codesourcery.com>
+// Special g++ Options: -fno-strict-aliasing
 
 #if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/misc13.C b/gcc/testsuite/g++.old-deja/g++.brendan/misc13.C
deleted file mode 100644 (file)
index c2c8bc5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// Build don't link: 
-// GROUPS passed miscellaneous-bugs
-// This should only give warnings from duplicate_decls; it should not get
-// errors from push_overloaded_decl as well.
-
-namespace std {
-extern "C"
-{
-  long unsigned int strlen(char*);// ERROR -  warning// ERROR -  warning.*
-}
-}
index 86a91e7e36f408b91c5e56201e8d2a4245fd3457..c285c29fe2e9560423cf034fbc3b874c75c5d94f 100644 (file)
@@ -8,10 +8,9 @@
 //  the use of __builtin_alloca, and thus ends up being unresolved.
 // Special g++ Options: 
 
-extern "C" void* alloca( __SIZE_TYPE__ );
 extern "C" int printf (const char *, ...);
 
 void* junk() {
-  return std::alloca(10);
+  return __builtin_alloca(10);
 }
 main() { printf ("PASS\n");}
index b7439f5d52107ddfc1a8a805f31540c50c4455b5..7db6b2b566a5c0158e8d8db0c09947e987b17a8f 100644 (file)
@@ -8,8 +8,8 @@
 class cvec {
 public:
         ~cvec(){ delete s; }
-        cvec(const char*x) { s = new char[strlen(x)+1]; strcpy(s, x); }
-       cvec(const cvec& c) { s = new char[strlen(c.s)+1]; strcpy(s, c.s); }
+        cvec(const char*x) { s = new char[std::strlen(x)+1]; std::strcpy(s, x); }
+       cvec(const cvec& c) { s = new char[std::strlen(c.s)+1]; std::strcpy(s, c.s); }
         operator const char*() { return s; }
 private:
         char *s;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net5.C b/gcc/testsuite/g++.old-deja/g++.mike/net5.C
deleted file mode 100644 (file)
index 665c0ba..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-// Build don't link:
-// Special g++ Options:
-
-namespace std {
-volatile void abort();         // WARNING - mismatch
-}
-
-volatile void oink() {
-  std::abort() ;
-}                              // gets bogus error - 
index b6cea1e201fe98ea915b5c6ba6c95915c529b93f..4a1630b013d3c607ae4f69e29541e84c0e043d98 100644 (file)
@@ -7,27 +7,14 @@
 namespace std 
 {
   extern "C" void abort (void);
-  extern "C" __SIZE_TYPE__ strlen (const char *);
 }
 
 int main ()
 {
   using namespace std;
   
-  if (strlen ("hello") != 5)
-    abort ();
-  if (std::strlen ("hello") != 5)
-    abort ();
   if (::__builtin_strlen ("hello") != 5)
     abort ();
   
   return 0;
 }
-
-extern "C"
-{
-  static __SIZE_TYPE__ ::strlen (const char *)
-  {
-    std::abort ();
-  }
-}
index 48e53f14343e9f3e020f466b9874b0aadd8dffc9..9c55b762531025d185cb2e629afe9a5e424fe0cb 100644 (file)
@@ -7,8 +7,6 @@
 namespace std 
 {
   extern "C" void abort (void);
-  extern "C" char *strcpy (char *, const char *);
-  extern "C" int memcmp (const void *, const void *, __SIZE_TYPE__);
 }
 
 int main ()
@@ -16,25 +14,9 @@ int main ()
   using namespace std;
   char f[16];
   
-  if (strcpy (f, "hello world") != f
-      || memcmp (f, "hello world", sizeof ("hello world")))
-    abort ();
-
-  if (std::strcpy (f, "bye world") != f
-      || memcmp (f, "bye world", sizeof ("bye world")))
-    abort ();
-
   if (::__builtin_strcpy (f, "hello world") != f
-      || memcmp (f, "hello world", sizeof ("hello world")))
+      || __builtin_memcmp (f, "hello world", sizeof ("hello world")))
     abort ();
   
   return 0;
 }
-
-extern "C"
-{
-  static char * ::strcpy (char *, const char *)
-  {
-    std::abort ();
-  }
-}
index 4a67b28e969fccedb8f6d26d095fa3602ac282c2..e075d3fdba3ca8e55b6a529abf1f9c24145c1939 100644 (file)
@@ -7,7 +7,6 @@
 namespace std 
 {
   extern "C" void abort (void);
-  extern "C" void *alloca (__SIZE_TYPE__);
 }
 
 int main ()
@@ -15,14 +14,6 @@ int main ()
   using namespace std;
   void *foo;
   
-  foo = alloca (32);
-  if (!foo)
-    abort ();
-
-  foo = std::alloca (32);
-  if (!foo)
-    abort ();
-
   foo = ::__builtin_alloca (32);
   if (!foo)
     abort ();
@@ -30,10 +21,3 @@ int main ()
   return 0;
 }
 
-extern "C"
-{
-  static void * ::alloca (__SIZE_TYPE__)
-  {
-    std::abort ();
-  }
-}
index 7118910a27fba65fbda6af30910b213f85a5f6a9..235bb1357523416479d57e563de0947bbb530b7a 100644 (file)
@@ -7,21 +7,12 @@
 namespace std 
 {
   extern "C" void abort (void);
-  extern "C" int printf (const char *, ...);
 }
 
 int main ()
 {
   using namespace std;
   
-  printf ("hello world\n");
-  printf ("\n");
-  printf ("%s\n", "hello world");
-  printf ("%c", '\n');
-  std::printf ("hello world\n");
-  std::printf ("\n");
-  std::printf ("%s\n", "hello world");
-  std::printf ("%c", '\n');
   ::__builtin_printf ("hello world\n");
   ::__builtin_printf ("\n");
   ::__builtin_printf ("%s\n", "hello world");
@@ -30,10 +21,3 @@ int main ()
   return 0;
 }
 
-extern "C"
-{
-  static int ::printf (const char *, ...)
-  {
-    std::abort ();
-  }
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline21.C b/gcc/testsuite/g++.old-deja/g++.other/inline21.C
new file mode 100644 (file)
index 0000000..1f3dd0e
--- /dev/null
@@ -0,0 +1,39 @@
+// Special g++ Options: -O2
+// Origin: suckfish@ihug.co.nz
+
+// DECLARATIONS
+
+struct Record {
+   Record (int bb) :
+      b (bb)
+      { }
+   int extra;   // Having an extra member in record is crucial.
+   int b;
+};
+      
+struct Container {
+   Record record;
+   // The const on the next line is crucial.
+   Container ( const Record  b) : record(b) {}
+};
+
+
+// TEST FOR CORRECT BEHAVIOUR
+
+int myArray[3];
+int * intp = myArray;
+
+void use_pair (const Container & c)
+{
+   *intp++ = c.record.b;
+}
+
+extern "C" int printf (const char *,...);
+
+int main()
+{
+  use_pair (Container (1234));
+
+  if (myArray[0] != 1234)
+    return 1;
+}
index a5b540bcf724150949077db46105b2d8b00ad7b4..17965d9a90bf132fc2e7edb7bc1db0eb10f5a07e 100644 (file)
@@ -23,23 +23,23 @@ public:
 
 NAMES_ITEM::NAMES_ITEM (const NAMES_ITEM& item2)
         {
-        size_t length=strlen(item2.name);
+        size_t length=std::strlen(item2.name);
 
         name=new char[length+1];
-        memcpy(name,item2.name,length+1);
+        std::memcpy(name,item2.name,length+1);
         }
 
 NAMES_ITEM::NAMES_ITEM (const char* name2)      
         {
-        size_t length=strlen(name2);
+        size_t length=std::strlen(name2);
 
         name=new char[length+1];
-        memcpy(name,name2,length+1);
+        std::memcpy(name,name2,length+1);
         }
 
 NAMES_ITEM::~NAMES_ITEM ()
 {
-  if (strcmp (name, "one") != 0)
+  if (std::strcmp (name, "one") != 0)
     abort ();
   
   name=0;
@@ -47,12 +47,12 @@ NAMES_ITEM::~NAMES_ITEM ()
 
 bool NAMES_ITEM::operator==(const NAMES_ITEM& n) const
 {
-  return (strcmp(name,n.name) == 0);
+  return (std::strcmp(name,n.name) == 0);
 }
 
 bool operator<(const NAMES_ITEM& n1, const NAMES_ITEM& n2)
     {
-    return (strcmp(n1.name,n2.name) < 0);
+    return (std::strcmp(n1.name,n2.name) < 0);
     }
 
     typedef map<NAMES_ITEM,size_t,less<NAMES_ITEM> > lookup_t;
index f243facec8ac4a0868084aeb1e139051c1f800c4..98bee9c6fcf4fab023f927c7d4bb87908b06838a 100644 (file)
@@ -11,7 +11,7 @@ extern bool foo2 (ostream &out, istream &in);
 bool
 foo1 (ostream &out, const char *in)
 {
-  string tmp(in, strlen(in));
+  string tmp(in, std::strlen(in));
   stringbuf sb (tmp);
   istream fmt (&sb);
   return foo2 (out, fmt);