mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 22:51:06 +08:00
temp2.C: New test.
* g++.dg/opt/temp2.C: New test. From-SVN: r113851
This commit is contained in:
parent
33598a1b8e
commit
7bab4b9026
@ -1,3 +1,7 @@
|
||||
2005-05-17 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* g++.dg/opt/temp2.C: New test.
|
||||
|
||||
2006-05-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/27491
|
||||
|
62
gcc/testsuite/g++.dg/opt/temp2.C
Normal file
62
gcc/testsuite/g++.dg/opt/temp2.C
Normal file
@ -0,0 +1,62 @@
|
||||
// { dg-do run }
|
||||
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
// Originally from PR 16681, found also in init/array15.C
|
||||
// This variant of the testcase verifies that we do not create
|
||||
// a temporary on the stack, which is PR 27620.
|
||||
|
||||
int i;
|
||||
|
||||
extern "C"
|
||||
void *memcpy (void *dest, const void *src, __SIZE_TYPE__ n)
|
||||
{
|
||||
char *d = (char *) dest;
|
||||
const char *s = (const char *) src;
|
||||
while (n--)
|
||||
d[n] = s[n];
|
||||
++i;
|
||||
return dest;
|
||||
}
|
||||
|
||||
struct foo {
|
||||
unsigned char buffer[41112];
|
||||
foo() ;
|
||||
bool check () const;
|
||||
};
|
||||
|
||||
foo::foo ()
|
||||
: buffer()
|
||||
{}
|
||||
|
||||
bool foo::check () const
|
||||
{
|
||||
for (unsigned ix = sizeof (buffer); ix--;)
|
||||
if (buffer[ix])
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void *operator new (__SIZE_TYPE__ size, void *p)
|
||||
{
|
||||
return p;
|
||||
}
|
||||
|
||||
char heap[50000];
|
||||
|
||||
int main ()
|
||||
{
|
||||
for (unsigned ix = sizeof (heap); ix--;)
|
||||
heap[ix] = ix;
|
||||
|
||||
i = 0;
|
||||
foo *f = new (heap) foo ();
|
||||
|
||||
if (i != 0)
|
||||
return 1;
|
||||
if (!f->check ())
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user