1 /* PR tree-optimization/86204 - wrong strlen result after prior strnlen
3 { dg-options "-O2 -Wall -fdump-tree-optimized" } */
7 #define NOIPA __attribute__ ((noipa))
13 unsigned n0
= strnlen (a
, 0);
14 unsigned n1
= strlen (a
);
16 if (n0
!= 0 || n1
!= 5)
22 unsigned n0
= strnlen (a
, 1);
23 unsigned n1
= strlen (a
);
25 if (n0
!= 1 || n1
!= 5)
31 unsigned n0
= strnlen (a
, 2);
32 unsigned n1
= strlen (a
);
34 if (n0
!= 2 || n1
!= 5)
40 unsigned n0
= strnlen (a
, 3);
41 unsigned n1
= strlen (a
);
43 if (n0
!= 3 || n1
!= 5)
49 unsigned n0
= strnlen (a
, 4);
50 unsigned n1
= strlen (a
);
52 if (n0
!= 4 || n1
!= 5)
58 unsigned n0
= strnlen (a
, 5);
59 unsigned n1
= strlen (a
);
61 if (n0
!= 5 || n1
!= 5)
67 unsigned n0
= strnlen (a
, 6);
68 unsigned n1
= strlen (a
);
70 if (n0
!= 5 || n1
!= 5)
74 NOIPA
void fx (unsigned n
)
76 unsigned n0
= strnlen (a
, n
);
77 unsigned n1
= strlen (a
);
79 unsigned min
= n
< 5 ? n
: 5;
80 if (n0
!= min
|| n1
!= 5)
87 unsigned n0
= strnlen (a
, 2);
88 unsigned n1
= strlen (a
);
90 if (n0
!= 2 || n1
!= 3)
97 unsigned n0
= strnlen (a
, 7);
98 unsigned n1
= strlen (a
);
100 if (n0
!= 3 || n1
!= 3)
104 NOIPA
void gx (unsigned n
)
107 unsigned n0
= strnlen (a
, n
);
108 unsigned n1
= strlen (a
);
110 unsigned min
= n
< 3 ? n
: 3;
111 if (n0
!= min
|| n1
!= 3)
134 /* For targets like Solaris 10 that don't define strnlen(). */
137 strnlen (const char *s
, size_t n
)
145 /* Verify that at least some of the 11 calls to strnlen have been
146 folded (this number of folded calls may need to be adjusted up
147 if the strnlen optimization improves, but it should not go down.
148 { dg-final { scan-tree-dump-times "= strnlen" 7 "optimized" } } */