Re: [PATCH 3/3] Add NOWARN and NOERR compile conditions

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

 



Hi Tony,

Tony Camuso <tcamuso@xxxxxxxxxx> writes:
> Here's one that might be a sparse bug.
>
> /work/linux/fs/bio.i:5368:26: error: Expected ) at end of cast operator
> /work/linux/fs/bio.i:5368:26: error: got __int128
>
> Here is the kernel source in include/linux/math64.h that causes the error.
>
> static inline __attribute__((no_instrument_function)) u64 mul_u64_u32_shr(u64 a, u32 mul, unsigned int shift)
> {
>  return (u64)(((unsigned __int128)a * mul) >> shift);
> }

This one is probably triggered by running sparse on gcc -E output.

The mul_u64_u32_shr() implementation cited by you is protected by a
  #if ... && defined(__SIZEOF_INT128__)
in include/linux/math64.h

__SIZEOF_INT128__ is #define'd by gcc but not by sparse.


The reason for your parsing error messages is probably that
declaration_specifiers() does not eat up the __int128, leaving this one
to cast_expression().

Could you please confirm that you did indeed run sparse on gcc -E
output?

Thank you,

Nicolai
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux