All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: kernel test robot <lkp@intel.com>
Cc: Kuan-Wei Chiu <visitorckw@gmail.com>,
	llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Guan-Chun Wu <409411716@gms.tku.edu.tw>,
	David Laight <david.laight.linux@gmail.com>
Subject: Re: lib/base64.c:58:18: warning: implicit conversion from 'int' to 's8' (aka 'signed char') changes value from 131 to -125
Date: Thu, 10 Sep 2026 15:35:20 -0700	[thread overview]
Message-ID: <20260910223520.GA3375179@ax162> (raw)
In-Reply-To: <202609110514.S0a0FD6a-lkp@intel.com>

On Fri, Sep 11, 2026 at 06:07:30AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   50d05c7c76c96b90462f24debacca971d2e86713
> commit: c4eb7ad32eab13ba64cc452c6f43d518b63f5e03 lib/base64: optimize base64_decode() with reverse lookup tables
> date:   10 months ago
> config: hexagon-allnoconfig (https://download.01.org/0day-ci/archive/20260911/202609110514.S0a0FD6a-lkp@intel.com/config)
> compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project d3db069999553568848400c84cbf815c03f5470f)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260911/202609110514.S0a0FD6a-lkp@intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Fixes: c4eb7ad32eab ("lib/base64: optimize base64_decode() with reverse lookup tables")
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202609110514.S0a0FD6a-lkp@intel.com/
> 
> All warnings (new ones prefixed by >>):
> 
> >> lib/base64.c:58:18: warning: implicit conversion from 'int' to 's8' (aka 'signed char') changes value from 131 to -125 [-Wconstant-conversion]
>       58 |         [BASE64_IMAP] = BASE64_REV_INIT('+', ',')
>          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:52:2: note: expanded from macro 'BASE64_REV_INIT'
>       48 | #define BASE64_REV_INIT(ch_62, ch_63) { \
>          |                                       ~
>       49 |         [0 ... 0x1f] = -1, \
>       50 |         INIT_32(0x20, ch_62, ch_63), \
>       51 |         INIT_32(0x40, ch_62, ch_63), \
>       52 |         INIT_32(0x60, ch_62, ch_63), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:46:50: note: expanded from macro 'INIT_32'
>       46 | #define INIT_32(v, ...) INIT_16(v, __VA_ARGS__), INIT_16((v) + 16, __VA_ARGS__)
>          |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:45:49: note: expanded from macro 'INIT_16'
>       45 | #define INIT_16(v, ...) INIT_8(v, __VA_ARGS__), INIT_8((v) + 8, __VA_ARGS__)
>          |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
>    lib/base64.c:43:48: note: expanded from macro 'INIT_4'
>       43 | #define INIT_4(v, ...) INIT_2(v, __VA_ARGS__), INIT_2((v) + 2, __VA_ARGS__)
>          |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:42:48: note: expanded from macro 'INIT_2'
>       42 | #define INIT_2(v, ...) INIT_1(v, __VA_ARGS__), INIT_1((v) + 1, __VA_ARGS__)
>          |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:34:42: note: expanded from macro 'INIT_1'
>       34 |                 : (v) >= '0' && (v) <= '9' ? (v) - '0' + 52 \
>          |                                              ~~~~~~~~~~^~~~
>    lib/base64.c:58:18: warning: implicit conversion from 'int' to 's8' (aka 'signed char') changes value from 130 to -126 [-Wconstant-conversion]
>       58 |         [BASE64_IMAP] = BASE64_REV_INIT('+', ',')
>          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:52:2: note: expanded from macro 'BASE64_REV_INIT'
>       48 | #define BASE64_REV_INIT(ch_62, ch_63) { \
>          |                                       ~
>       49 |         [0 ... 0x1f] = -1, \
>       50 |         INIT_32(0x20, ch_62, ch_63), \
>       51 |         INIT_32(0x40, ch_62, ch_63), \
>       52 |         INIT_32(0x60, ch_62, ch_63), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:46:50: note: expanded from macro 'INIT_32'
>       46 | #define INIT_32(v, ...) INIT_16(v, __VA_ARGS__), INIT_16((v) + 16, __VA_ARGS__)
>          |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:45:49: note: expanded from macro 'INIT_16'
>       45 | #define INIT_16(v, ...) INIT_8(v, __VA_ARGS__), INIT_8((v) + 8, __VA_ARGS__)
>          |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
>    lib/base64.c:43:48: note: expanded from macro 'INIT_4'
>       43 | #define INIT_4(v, ...) INIT_2(v, __VA_ARGS__), INIT_2((v) + 2, __VA_ARGS__)
>          |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:42:24: note: expanded from macro 'INIT_2'
>       42 | #define INIT_2(v, ...) INIT_1(v, __VA_ARGS__), INIT_1((v) + 1, __VA_ARGS__)
>          |                        ^~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:34:42: note: expanded from macro 'INIT_1'
>       34 |                 : (v) >= '0' && (v) <= '9' ? (v) - '0' + 52 \
>          |                                              ~~~~~~~~~~^~~~
>    lib/base64.c:58:18: warning: implicit conversion from 'int' to 's8' (aka 'signed char') changes value from 129 to -127 [-Wconstant-conversion]
>       58 |         [BASE64_IMAP] = BASE64_REV_INIT('+', ',')
>          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:52:2: note: expanded from macro 'BASE64_REV_INIT'
>       48 | #define BASE64_REV_INIT(ch_62, ch_63) { \
>          |                                       ~
>       49 |         [0 ... 0x1f] = -1, \
>       50 |         INIT_32(0x20, ch_62, ch_63), \
>       51 |         INIT_32(0x40, ch_62, ch_63), \
>       52 |         INIT_32(0x60, ch_62, ch_63), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:46:50: note: expanded from macro 'INIT_32'
>       46 | #define INIT_32(v, ...) INIT_16(v, __VA_ARGS__), INIT_16((v) + 16, __VA_ARGS__)
>          |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:45:49: note: expanded from macro 'INIT_16'
>       45 | #define INIT_16(v, ...) INIT_8(v, __VA_ARGS__), INIT_8((v) + 8, __VA_ARGS__)
>          |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
>    lib/base64.c:43:24: note: expanded from macro 'INIT_4'
>       43 | #define INIT_4(v, ...) INIT_2(v, __VA_ARGS__), INIT_2((v) + 2, __VA_ARGS__)
>          |                        ^~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:42:48: note: expanded from macro 'INIT_2'
>       42 | #define INIT_2(v, ...) INIT_1(v, __VA_ARGS__), INIT_1((v) + 1, __VA_ARGS__)
>          |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:34:42: note: expanded from macro 'INIT_1'
>       34 |                 : (v) >= '0' && (v) <= '9' ? (v) - '0' + 52 \
>          |                                              ~~~~~~~~~~^~~~
>    lib/base64.c:58:18: warning: implicit conversion from 'int' to 's8' (aka 'signed char') changes value from 128 to -128 [-Wconstant-conversion]
>       58 |         [BASE64_IMAP] = BASE64_REV_INIT('+', ',')
>          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:52:2: note: expanded from macro 'BASE64_REV_INIT'
>       48 | #define BASE64_REV_INIT(ch_62, ch_63) { \
>          |                                       ~
>       49 |         [0 ... 0x1f] = -1, \
>       50 |         INIT_32(0x20, ch_62, ch_63), \
>       51 |         INIT_32(0x40, ch_62, ch_63), \
>       52 |         INIT_32(0x60, ch_62, ch_63), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:46:50: note: expanded from macro 'INIT_32'
>       46 | #define INIT_32(v, ...) INIT_16(v, __VA_ARGS__), INIT_16((v) + 16, __VA_ARGS__)
>          |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    lib/base64.c:45:49: note: expanded from macro 'INIT_16'
>       45 | #define INIT_16(v, ...) INIT_8(v, __VA_ARGS__), INIT_8((v) + 8, __VA_ARGS__)
>          |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
>    lib/base64.c:43:24: note: expanded from macro 'INIT_4'
>       43 | #define INIT_4(v, ...) INIT_2(v, __VA_ARGS__), INIT_2((v) + 2, __VA_ARGS__)

I have not looked into the legitimacy of this warning yet but it comes
about from a recent change to fix -Wconstant-conversion in clang:

  https://github.com/llvm/llvm-project/commit/a5ef934a8d295dc03be3960f2b3744ec2e53238e

-- 
Cheers,
Nathan

  reply	other threads:[~2026-09-10 22:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-10 22:07 lib/base64.c:58:18: warning: implicit conversion from 'int' to 's8' (aka 'signed char') changes value from 131 to -125 kernel test robot
2026-09-10 22:35 ` Nathan Chancellor [this message]
2026-09-11  6:41   ` Kuan-Wei Chiu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260910223520.GA3375179@ax162 \
    --to=nathan@kernel.org \
    --cc=409411716@gms.tku.edu.tw \
    --cc=akpm@linux-foundation.org \
    --cc=david.laight.linux@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=visitorckw@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.