| /* PR tree-optimization/89500 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-optimized" } */ |
| /* { dg-final { scan-tree-dump-times "return 10;" 2 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times "return 5;" 1 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times "return 0;" 2 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times "strnlen " 1 "optimized" } } */ |
| |
| #include "strlenopt.h" |
| |
| void foo (char *); |
| |
| size_t |
| f1 (void) |
| { |
| char a[10] = "0123456789"; |
| return strnlen (a, 10); |
| } |
| |
| size_t |
| f2 (void) |
| { |
| char a[10] = "0123456789"; |
| return strnlen (a, 5); |
| } |
| |
| size_t |
| f3 (void) |
| { |
| char a[10] = "0123456789"; |
| return strnlen (a, 0); |
| } |
| |
| size_t |
| f4 (void) |
| { |
| char a[20]; |
| foo (a); |
| memcpy (a, "0123456789", 10); |
| return strnlen (a, 10); |
| } |
| |
| size_t |
| f5 (void) |
| { |
| char a[20]; |
| foo (a); |
| memcpy (a, "0123456789", 10); |
| return strnlen (a, 14); |
| } |
| |
| size_t |
| f6 (void) |
| { |
| char a[20]; |
| foo (a); |
| return strnlen (a, 0); |
| } |