From 65dd7aa1b89fa4274a8388586520f5ec2d22f2aa Mon Sep 17 00:00:00 2001 From: msebor Date: Fri, 29 Jun 2018 16:37:54 +0000 Subject: [PATCH] gcc/testsuite/ChangeLog: * gcc.dg/strlenopt-46.c: Define strnlen for targets like Solaris 10 that don't define the function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262255 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/strlenopt-46.c | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cc71d594739..063b271cd93 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-29 Martin Sebor + + * gcc.dg/strlenopt-46.c: Define strnlen for targets like Solaris 10 + that don't define the function. + 2018-06-29 Marek Polacek PR c++/86184 diff --git a/gcc/testsuite/gcc.dg/strlenopt-46.c b/gcc/testsuite/gcc.dg/strlenopt-46.c index dc6eef7ca53..170b901bb70 100644 --- a/gcc/testsuite/gcc.dg/strlenopt-46.c +++ b/gcc/testsuite/gcc.dg/strlenopt-46.c @@ -1,6 +1,6 @@ /* PR tree-optimization/86204 - wrong strlen result after prior strnlen { dg-do run } - { dg-options "-O2 -Wall" } */ + { dg-options "-O2 -Wall -fdump-tree-optimized" } */ #include "strlenopt.h" @@ -129,3 +129,20 @@ int main (void) gx (2); gx (7); } + + +/* For targets like Solaris 10 that don't define strnlen(). */ + +NOIPA size_t +strnlen (const char *s, size_t n) +{ + size_t len = 0; + while (*s++ && n--) + ++len; + return len; +} + +/* Verify that at least some of the 11 calls to strnlen have been + folded (this number of folded calls may need to be adjusted up + if the strnlen optimization improves, but it should not go down. + { dg-final { scan-tree-dump-times "= strnlen" 7 "optimized" } } */ -- 2.11.4.GIT