Re: [PATCH v1 09/48] perf tests: Silence -Wshorten-64-to-32 warnings

Leo Yan
2025-04-02T16:38:12Z

Hi Ian,

On Wed, Apr 02, 2025 at 08:42:58AM -0700, Ian Rogers wrote:

[...]

> On Wed, Apr 2, 2025 at 7:35 AM Leo Yan <leo.yan@arm.com> wrote:
> >
> > On Tue, Apr 01, 2025 at 11:23:07AM -0700, Ian Rogers wrote:
> >
> > [...]
> >
> > > @@ -478,13 +478,14 @@ static int __cmd_test(struct test_suite **suites, int argc, const char *argv[],
> > > int err = 0;
> > >
> > > for (struct test_suite **t = suites; *t; t++) {
> > > - int i, len = strlen(test_description(*t, -1));
> > > + int i;
> > > + int len = (int)strlen(test_description(*t, -1));
> >
> > Thanks for huge polish.
> >
> > Just a concern from me. Throughout this patch, the methodology is not
> > consistent. Some changes update variable types which is fine for me.
> >
> > But the case above it simply cast size_t to int. Should we update the
> > variable type as 'size_t' at here?
>
> Thanks Leo, I played around with it, but don't mind if someone wants
> to do it a different way. I was trying to make the changes minimal.
> The problem typically with size_t is we then use the value, for
> example, as a printf size modifier and need to introduce lots of casts
> back to being an int.

This conclusion is not quite right, see:
https://stackoverflow.com/questions/2524611/how-can-one-print-a-size-t-variable-portably-using-the-printf-family

> When this isn't too great I've done it, but in
> this case I think keeping the int, the lack of casts but a cast here
> to capture that we expect test descriptions to fit in the size of an
> int is the least worst option.

I would say in another way. After we enabled a compiler warning
option, this will give us a chance to improve code by dismissing
the warnings (and avoid potential bugs).

If we use casts just to silence warnings, we also lose the opportunity
to improve code quality. The changes in this series that fix type
mismatches are good, but I think the use of casts is not particularly
helpful - we're simply switching from implicit compiler casts to
explicit ones.

Thanks,
Leo