35 lines
612 B
C
35 lines
612 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-O1 -fdump-tree-fab" } */
|
|
|
|
/* Check that we fold strlen of equally long strings, and that we do not
|
|
fail to terminate when there is a nontrivial cycle in the corresponding
|
|
ssa graph. */
|
|
|
|
extern __SIZE_TYPE__ strlen (const char *);
|
|
|
|
void foo(int i)
|
|
{
|
|
char *s = "abcde";
|
|
|
|
if (i)
|
|
{
|
|
s = "defgh";
|
|
goto middle;
|
|
}
|
|
|
|
start:
|
|
|
|
bla ();
|
|
|
|
middle:
|
|
|
|
if (bla ())
|
|
goto start;
|
|
|
|
bar (strlen (s));
|
|
}
|
|
|
|
/* There should be no calls to strlen. */
|
|
/* { dg-final { scan-tree-dump-times "strlen" 0 "fab"} } */
|
|
/* { dg-final { cleanup-tree-dump "fab" } } */
|