Re: gcc warning in my trace_benchmark() code

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

 



On Thu, Jun 05, 2014 at 10:12:16AM -0700, David Daney wrote:

> >vim +84 kernel/trace/trace_benchmark.c
> >
> >     78		if (bm_cnt > 1) {
> >     79			/*
> >     80			 * Apply Welford's method to calculate standard deviation:
> >     81			 * s^2 = 1 / (n * (n-1)) * (n * \Sum (x_i)^2 - (\Sum x_i)^2)
> >     82			 */
> >     83			stddev = (u64)bm_cnt * bm_totalsq - bm_total * bm_total;
> >   > 84			do_div(stddev, bm_cnt);
> >   > 85			do_div(stddev, bm_cnt - 1);
> >     86		} else
> >     87			stddev = 0;
> >     88	
> >
> >
> >
> >Is there something special with do_div in mips that I should be aware
> >of?
> 
> Yes.  MIPS is using the implementation in asm-generic/div64.h,
> which per the comments in that file has a useless pointer compare to
> find just this type of issue.

And it's not the only warning it's picking up.

> Ralf:  As a side note, while looking at
> arch/mips/include/asm/div64.h, I saw that the implementation of
> __div64_32 in that file will be unused, and is also completely
> broken due to the first parameter never being used.

Seems I broke c21004cd5b4cb7d479514d470a62366e8307412c "MIPS: Rewrite
<asm/div64.h> to work with gcc 4.4.0."  Took only five years until
somebody noticed ...

  Ralf


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux