annotate gcc/testsuite/gcc.dg/strlenopt-94.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* PR tree-optimization/93982 - Assignment incorrectly omitted by
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 -foptimize-strlen
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 { dg-do run }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 { dg-options "-O2 -Wall" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 struct A { const char **a; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 const char *buf[5];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 __attribute__((noipa)) struct A
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 foo (char *p)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 struct A r = { (const char **) p };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 r.a[0] = "12345678";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 r.a[1] = "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 r.a[2] = "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 r.a[3] = "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 r.a[4] = "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 return r;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 main ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 struct A r = foo ((char *) &buf[0]);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 if (!r.a[1] || r.a[1][0] != '\0')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 __builtin_abort ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 return 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 }