[PATCH] testsuite: Fix array size in gcc.dg/strlenopt-66.c

Dimitar Dimitrov dimitar@dinux.eu
Thu Nov 21 22:09:00 GMT 2019


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  <dimitar@dinux.eu>
> > 
> > 	* gcc.dg/strlenopt-66.c (test_strncmp_a4_cond_a5_a3_n): Fix array size.
> > 
> > Signed-off-by: Dimitar Dimitrov <dimitar@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





More information about the Gcc-patches mailing list