111
|
1 /* { dg-do compile } */
|
|
2 /* { dg-options "-O1 -fdump-tree-fab1" } */
|
|
3
|
|
4 /* Check that we fold strlen of equally long strings, and that we do not
|
|
5 fail to terminate when there is a nontrivial cycle in the corresponding
|
|
6 ssa graph. */
|
|
7
|
|
8 extern __SIZE_TYPE__ strlen (const char *);
|
|
9 extern void bar (__SIZE_TYPE__);
|
|
10 extern int bla (void);
|
|
11
|
|
12 void foo(int i)
|
|
13 {
|
|
14 char *s = "abcde";
|
|
15
|
|
16 if (i)
|
|
17 {
|
|
18 s = "defgh";
|
|
19 goto middle;
|
|
20 }
|
|
21
|
|
22 start:
|
|
23
|
|
24 bla ();
|
|
25
|
|
26 middle:
|
|
27
|
|
28 if (bla ())
|
|
29 goto start;
|
|
30
|
|
31 bar (strlen (s));
|
|
32 }
|
|
33
|
|
34 /* There should be no calls to strlen. */
|
|
35 /* { dg-final { scan-tree-dump-times "strlen" 0 "fab1"} } */
|