URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 301 |
Rev 338 |
// PR c++/39480
|
// PR c++/39480
|
// It isn't always safe to call memcpy with identical arguments.
|
// It isn't always safe to call memcpy with identical arguments.
|
// { dg-do run }
|
// { dg-do run }
|
|
|
extern "C" void abort();
|
extern "C" void abort();
|
extern "C" void *
|
extern "C" void *
|
memcpy(void *dest, void *src, __SIZE_TYPE__ n)
|
memcpy(void *dest, void *src, __SIZE_TYPE__ n)
|
{
|
{
|
if (dest == src)
|
if (dest == src)
|
abort();
|
abort();
|
else
|
else
|
{
|
{
|
__SIZE_TYPE__ i;
|
__SIZE_TYPE__ i;
|
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
((char *)dest)[i] = ((const char*)src)[i];
|
((char *)dest)[i] = ((const char*)src)[i];
|
}
|
}
|
}
|
}
|
|
|
struct A
|
struct A
|
{
|
{
|
double d[10];
|
double d[10];
|
};
|
};
|
|
|
struct B: public A
|
struct B: public A
|
{
|
{
|
char bc;
|
char bc;
|
};
|
};
|
|
|
B b;
|
B b;
|
|
|
void f(B *a1, B* a2)
|
void f(B *a1, B* a2)
|
{
|
{
|
*a1 = *a2;
|
*a1 = *a2;
|
}
|
}
|
|
|
int main()
|
int main()
|
{
|
{
|
f(&b,&b);
|
f(&b,&b);
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.