* 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
+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.
#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; \
// Origin: Mark Mitchell <mark@codesourcery.com>
+// Special g++ Options: -fno-strict-aliasing
#if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100
+++ /dev/null
-// 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.*
-}
-}
// 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");}
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;
+++ /dev/null
-// Build don't link:
-// Special g++ Options:
-
-namespace std {
-volatile void abort(); // WARNING - mismatch
-}
-
-volatile void oink() {
- std::abort() ;
-} // gets bogus error -
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 ();
- }
-}
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 ()
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 ();
- }
-}
namespace std
{
extern "C" void abort (void);
- extern "C" void *alloca (__SIZE_TYPE__);
}
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 ();
return 0;
}
-extern "C"
-{
- static void * ::alloca (__SIZE_TYPE__)
- {
- std::abort ();
- }
-}
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");
return 0;
}
-extern "C"
-{
- static int ::printf (const char *, ...)
- {
- std::abort ();
- }
-}
--- /dev/null
+// 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;
+}
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;
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;
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);