Commit f5aada26 by Mark Mitchell Committed by Mark Mitchell

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.

From-SVN: r42554
parent 0b1161fc
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> 2001-05-24 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.pt/using1.C: Adjust. * g++.old-deja/g++.pt/using1.C: Adjust.
......
...@@ -55,7 +55,7 @@ check_bits (char *buf, ...@@ -55,7 +55,7 @@ check_bits (char *buf,
#define CHECK_FIELD(AGGREGATE, FIELD, START_BIT, NUM_BITS, RVAL) \ #define CHECK_FIELD(AGGREGATE, FIELD, START_BIT, NUM_BITS, RVAL) \
do { \ do { \
AGGREGATE a__; \ AGGREGATE a__; \
memset (& a__, 0, sizeof (a__)); \ std::memset (& a__, 0, sizeof (a__)); \
a__.FIELD = -1; \ a__.FIELD = -1; \
if (! check_bits ((char *) & a__, sizeof (a__), START_BIT, NUM_BITS)) \ if (! check_bits ((char *) & a__, sizeof (a__), START_BIT, NUM_BITS)) \
return RVAL; \ return RVAL; \
......
// Origin: Mark Mitchell <mark@codesourcery.com> // Origin: Mark Mitchell <mark@codesourcery.com>
// Special g++ Options: -fno-strict-aliasing
#if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 #if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100
......
// 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.*
}
}
...@@ -8,10 +8,9 @@ ...@@ -8,10 +8,9 @@
// the use of __builtin_alloca, and thus ends up being unresolved. // the use of __builtin_alloca, and thus ends up being unresolved.
// Special g++ Options: // Special g++ Options:
extern "C" void* alloca( __SIZE_TYPE__ );
extern "C" int printf (const char *, ...); extern "C" int printf (const char *, ...);
void* junk() { void* junk() {
return std::alloca(10); return __builtin_alloca(10);
} }
main() { printf ("PASS\n");} main() { printf ("PASS\n");}
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
class cvec { class cvec {
public: public:
~cvec(){ delete s; } ~cvec(){ delete s; }
cvec(const char*x) { s = new char[strlen(x)+1]; strcpy(s, x); } cvec(const char*x) { s = new char[std::strlen(x)+1]; std::strcpy(s, x); }
cvec(const cvec& c) { s = new char[strlen(c.s)+1]; strcpy(s, c.s); } cvec(const cvec& c) { s = new char[std::strlen(c.s)+1]; std::strcpy(s, c.s); }
operator const char*() { return s; } operator const char*() { return s; }
private: private:
char *s; char *s;
......
// Build don't link:
// Special g++ Options:
namespace std {
volatile void abort(); // WARNING - mismatch
}
volatile void oink() {
std::abort() ;
} // gets bogus error -
...@@ -7,27 +7,14 @@ ...@@ -7,27 +7,14 @@
namespace std namespace std
{ {
extern "C" void abort (void); extern "C" void abort (void);
extern "C" __SIZE_TYPE__ strlen (const char *);
} }
int main () int main ()
{ {
using namespace std; using namespace std;
if (strlen ("hello") != 5)
abort ();
if (std::strlen ("hello") != 5)
abort ();
if (::__builtin_strlen ("hello") != 5) if (::__builtin_strlen ("hello") != 5)
abort (); abort ();
return 0; return 0;
} }
extern "C"
{
static __SIZE_TYPE__ ::strlen (const char *)
{
std::abort ();
}
}
...@@ -7,8 +7,6 @@ ...@@ -7,8 +7,6 @@
namespace std namespace std
{ {
extern "C" void abort (void); extern "C" void abort (void);
extern "C" char *strcpy (char *, const char *);
extern "C" int memcmp (const void *, const void *, __SIZE_TYPE__);
} }
int main () int main ()
...@@ -16,25 +14,9 @@ int main () ...@@ -16,25 +14,9 @@ int main ()
using namespace std; using namespace std;
char f[16]; 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 if (::__builtin_strcpy (f, "hello world") != f
|| memcmp (f, "hello world", sizeof ("hello world"))) || __builtin_memcmp (f, "hello world", sizeof ("hello world")))
abort (); abort ();
return 0; return 0;
} }
extern "C"
{
static char * ::strcpy (char *, const char *)
{
std::abort ();
}
}
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
namespace std namespace std
{ {
extern "C" void abort (void); extern "C" void abort (void);
extern "C" void *alloca (__SIZE_TYPE__);
} }
int main () int main ()
...@@ -15,14 +14,6 @@ int main () ...@@ -15,14 +14,6 @@ int main ()
using namespace std; using namespace std;
void *foo; void *foo;
foo = alloca (32);
if (!foo)
abort ();
foo = std::alloca (32);
if (!foo)
abort ();
foo = ::__builtin_alloca (32); foo = ::__builtin_alloca (32);
if (!foo) if (!foo)
abort (); abort ();
...@@ -30,10 +21,3 @@ int main () ...@@ -30,10 +21,3 @@ int main ()
return 0; return 0;
} }
extern "C"
{
static void * ::alloca (__SIZE_TYPE__)
{
std::abort ();
}
}
...@@ -7,21 +7,12 @@ ...@@ -7,21 +7,12 @@
namespace std namespace std
{ {
extern "C" void abort (void); extern "C" void abort (void);
extern "C" int printf (const char *, ...);
} }
int main () int main ()
{ {
using namespace std; 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 ("hello world\n");
::__builtin_printf ("\n"); ::__builtin_printf ("\n");
::__builtin_printf ("%s\n", "hello world"); ::__builtin_printf ("%s\n", "hello world");
...@@ -30,10 +21,3 @@ int main () ...@@ -30,10 +21,3 @@ int main ()
return 0; return 0;
} }
extern "C"
{
static int ::printf (const char *, ...)
{
std::abort ();
}
}
// 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;
}
...@@ -23,23 +23,23 @@ public: ...@@ -23,23 +23,23 @@ public:
NAMES_ITEM::NAMES_ITEM (const NAMES_ITEM& item2) 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]; 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) NAMES_ITEM::NAMES_ITEM (const char* name2)
{ {
size_t length=strlen(name2); size_t length=std::strlen(name2);
name=new char[length+1]; name=new char[length+1];
memcpy(name,name2,length+1); std::memcpy(name,name2,length+1);
} }
NAMES_ITEM::~NAMES_ITEM () NAMES_ITEM::~NAMES_ITEM ()
{ {
if (strcmp (name, "one") != 0) if (std::strcmp (name, "one") != 0)
abort (); abort ();
name=0; name=0;
...@@ -47,12 +47,12 @@ NAMES_ITEM::~NAMES_ITEM () ...@@ -47,12 +47,12 @@ NAMES_ITEM::~NAMES_ITEM ()
bool NAMES_ITEM::operator==(const NAMES_ITEM& n) const 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) 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; typedef map<NAMES_ITEM,size_t,less<NAMES_ITEM> > lookup_t;
......
...@@ -11,7 +11,7 @@ extern bool foo2 (ostream &out, istream &in); ...@@ -11,7 +11,7 @@ extern bool foo2 (ostream &out, istream &in);
bool bool
foo1 (ostream &out, const char *in) foo1 (ostream &out, const char *in)
{ {
string tmp(in, strlen(in)); string tmp(in, std::strlen(in));
stringbuf sb (tmp); stringbuf sb (tmp);
istream fmt (&sb); istream fmt (&sb);
return foo2 (out, fmt); return foo2 (out, fmt);
......
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