On Thu, 21 Nov 2019, 20:09:23 EET Martin Sebor wrote: > On 11/21/19 10:11 AM, Dimitar Dimitrov wrote: > > One of the passed arguments is actually a string with size 4 ("123"). > > Adjust the destination buffer accordingly. > > > > gcc/testsuite/ChangeLog: > > > > 2019-11-21 Dimitar Dimitrov <dimi...@dinux.eu> > > > > * gcc.dg/strlenopt-66.c (test_strncmp_a4_cond_a5_a3_n): Fix array size. > > > > Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu> > > --- > > > > gcc/testsuite/gcc.dg/strlenopt-66.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/gcc/testsuite/gcc.dg/strlenopt-66.c > > b/gcc/testsuite/gcc.dg/strlenopt-66.c index 4ba31a845b0..3de22c18f4f > > 100644 > > --- a/gcc/testsuite/gcc.dg/strlenopt-66.c > > +++ b/gcc/testsuite/gcc.dg/strlenopt-66.c > > @@ -88,7 +88,7 @@ __attribute__ ((noclone, noinline, noipa)) void > > > > test_strncmp_a4_cond_a5_a3_n (const char *s1, const char *s2, const char > > *s3,> > > int i, unsigned n) > > > > { > > > > - char a3[3], a4[4], a5[5]; > > + char a3[4], a4[4], a5[5]; > > That does look like a mistake. Thanks for bringing it up! > > The purpose of the test is to exercise strncmp calls whose first > two arguments involve arrays of all different sizes (and strings > of different lengths stored in them). In this function, > the operands of the conditional expression should also be of > different sizes than the first argument: one should be smaller > and the other bigger. > > So to keep the test doing what it's meant to do I think we need > to change lengths of the strings passed to the function to fit > the arrays rather than the sizes of the locals. (Adding even > more calls to cover all the permutations of lengths and sizes > would be a further improvement.) > > If this sounds too elaborate let me know and I'll fix the test. > > Martin Hi,
I admit I'm a bit confused, so I'll let you fix the test as you see fit. With "noipa" function attribute the compiler should not be able to propagate the string constants, so a3/a4/a5 string lengths are unknown when strncmp is invoked. I don't understand how PR90626 would take effect in such case. Also, I fail to see how the different sizes of local arrays influence the test. Regards, Dimitar