1 /* PR tree-optimization/43904.  */
2 /* { dg-do run } */
3 /* { dg-options "-O1 -foptimize-sibling-calls" } */
4 
5 typedef __SIZE_TYPE__ size_t;
6 extern void abort(void);
7 
8 void *memcpy(void *dest, const void *src, size_t n);
9 
10 void
buggy_init(void * ptr,size_t size)11 buggy_init(void *ptr, size_t size)
12 {
13   const char *str = "Hello world!";
14   memcpy(ptr, &str, size);
15 }
16 
17 void
expose_bug(void * ptr,size_t size)18 expose_bug(void *ptr, size_t size)
19 {
20   const char *str;
21   memcpy(&str, ptr, size);
22   if (*str != 'H')
23     abort ();
24 }
25 
26 int
main()27 main()
28 {
29   const char *ptr;
30   buggy_init(&ptr, sizeof(ptr));
31   expose_bug(&ptr, sizeof(ptr));
32   return 0;
33 }
34