URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 298 |
Rev 338 |
/* PR tree-optimization/43904. */
|
/* PR tree-optimization/43904. */
|
/* { dg-do run } */
|
/* { dg-do run } */
|
/* { dg-options "-O1 -foptimize-sibling-calls" } */
|
/* { dg-options "-O1 -foptimize-sibling-calls" } */
|
|
|
typedef __SIZE_TYPE__ size_t;
|
typedef __SIZE_TYPE__ size_t;
|
extern void abort(void);
|
extern void abort(void);
|
|
|
void *memcpy(void *dest, const void *src, size_t n);
|
void *memcpy(void *dest, const void *src, size_t n);
|
|
|
void
|
void
|
buggy_init(void *ptr, size_t size)
|
buggy_init(void *ptr, size_t size)
|
{
|
{
|
const char *str = "Hello world!";
|
const char *str = "Hello world!";
|
memcpy(ptr, &str, size);
|
memcpy(ptr, &str, size);
|
}
|
}
|
|
|
void
|
void
|
expose_bug(void *ptr, size_t size)
|
expose_bug(void *ptr, size_t size)
|
{
|
{
|
const char *str;
|
const char *str;
|
memcpy(&str, ptr, size);
|
memcpy(&str, ptr, size);
|
if (*str != 'H')
|
if (*str != 'H')
|
abort ();
|
abort ();
|
}
|
}
|
|
|
int
|
int
|
main()
|
main()
|
{
|
{
|
const char *ptr;
|
const char *ptr;
|
buggy_init(&ptr, sizeof(ptr));
|
buggy_init(&ptr, sizeof(ptr));
|
expose_bug(&ptr, sizeof(ptr));
|
expose_bug(&ptr, sizeof(ptr));
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.