1 /* PR tree-optimization/94015 */
2 /* { dg-do run } */
3 /* { dg-options "-O2" } */
4
5 char buf[10] = "AAAAAAAAA";
6
7 __attribute__((noipa)) char *
8 alloc (void)
9 {
10 return buf;
11 }
12
13 __attribute__((noipa)) void
14 f1 (void)
15 {
16 char *s = alloc ();
17 *(char **)s = "1234567";
18 s[7] = '\0';
19 }
20
21 __attribute__((noipa)) void
22 f2 (void)
23 {
24 char *s = alloc ();
25 *(char **)s = "123456";
26 s[6] = '\0';
27 }
28
29 __attribute__((noipa)) void
30 f3 (void)
31 {
32 char *s = alloc ();
33 *(char **)s = "12345";
34 s[5] = '\0';
35 }
36
37 __attribute__((noipa)) void
38 f4 (void)
39 {
40 char *s = alloc ();
41 *(char **)s = "1234";
42 s[4] = '\0';
43 }
44
45 __attribute__((noipa)) void
46 f5 (void)
47 {
48 char *s = alloc ();
49 *(char **)s = "123";
50 s[3] = '\0';
51 }
52
53 __attribute__((noipa)) void
54 f6 (void)
55 {
56 char *s = alloc ();
57 *(char **)s = "12";
58 s[2] = '\0';
59 }
60
61 __attribute__((noipa)) void
62 f7 (void)
63 {
64 char *s = alloc ();
65 *(char **)s = "1";
66 s[1] = '\0';
67 }
68
69 __attribute__((noipa)) void
70 f8 (void)
71 {
72 char *s = alloc ();
73 *(char **)s = "";
74 s[0] = '\0';
75 }
76
77 int
78 main ()
79 {
80 if (sizeof (char *) > 8)
81 return 0;
82 f1 ();
83 if (buf[7] != 0)
84 __builtin_abort ();
85 f2 ();
86 if (buf[6] != 0)
87 __builtin_abort ();
88 f3 ();
89 if (buf[5] != 0)
90 __builtin_abort ();
91 f4 ();
92 if (buf[4] != 0)
93 __builtin_abort ();
94 f5 ();
95 if (buf[3] != 0)
96 __builtin_abort ();
97 f6 ();
98 if (buf[2] != 0)
99 __builtin_abort ();
100 f7 ();
101 if (buf[1] != 0)
102 __builtin_abort ();
103 f8 ();
104 if (buf[0] != 0)
105 __builtin_abort ();
106 return 0;
107 }