Re: [PATCH fbtest] Initialize ticks in benchmark()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Philipp,

Thanks for your patch!

On Thu, Jun 29, 2023 at 10:28 AM Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> wrote:
> Fixes a build error with GCC 13:
>
>   util.c: In function 'benchmark':
>   util.c:177:17: error: 'ticks' may be used uninitialized [-Werror=maybe-uninitialized]
>   util.c:161:14: note: 'ticks' was declared here

I believe this is a false positive?
(unless your "long" type has only a single bit ;-)

But as this is built with -Werror, I agree it is better to play it safe,
and fix this.

>
> Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>

> --- a/util.c
> +++ b/util.c
> @@ -158,7 +158,7 @@ static uint64_t get_ticks(void)
>
>  double benchmark(void (*func)(unsigned long n, void *data), void *data)
>  {
> -    uint64_t ticks;
> +    uint64_t ticks = 0;

Wouldn't it be better to preinitialize this to 1 instead?
Else an overzealous compiler might detect possible UB in the division
below, and more hell might break loose...

    return 1e6*n/ticks;

>      unsigned long n = 1;
>
>      printf("Benchmarking... ");

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



[Index of Archives]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Tourism]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux