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