Re: [PATCH] scsi: ufs: Fix the build for gcc 9 and before

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

 



On Tue, Aug 01, 2023 at 01:13:23PM -0700, Bart Van Assche wrote:
> gcc compilers before version 10 cannot do constant-folding for sub-byte
> bitfields. This makes the compiler layout tests fail. Hence skip the
> layout checks for gcc 9 and before.
> 
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> Cc: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>
> Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>
> Suggested-by: Arnd Bergmann <arnd@xxxxxxxx>
> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>
> ---
>  drivers/ufs/core/ufshcd.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index 23335aaa6a66..875c860bcc05 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -10564,6 +10564,15 @@ static const struct dev_pm_ops ufshcd_wl_pm_ops = {
>  
>  static void ufshcd_check_header_layout(void)
>  {
> +#if defined(__GNUC__) && __GNUC__ -0 < 10

clang defines __GNUC__ and it does not sound like it is impacted by this
issue? I just built with LLVM 11 through 17 and did not see it. Can this
be made more specific?

Also, can we use IS_ENABLED() and not rely on the preprocessor? This
appears to work for me.

    if (IS_ENABLED(CONFIG_CC_IS_GCC) && CONFIG_GCC_VERSION < 100000)
        return;

> +	/*
> +	 * gcc compilers before version 10 cannot do constant-folding for
> +	 * sub-byte bitfields. Hence skip the layout checks for gcc 9 and
> +	 * before.
> +	 */
> +	return;
> +#endif
> +
>  	BUILD_BUG_ON(((u8 *)&(struct request_desc_header){
>  				.cci = 3})[0] != 3);
>  



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux