Messages in this thread | | | Date | Thu, 21 Apr 2022 16:18:14 -0700 | From | Guenter Roeck <> | Subject | Re: drivers/usb/typec/tcpm/tcpm.c:4724:3: error: case label does not reduce to an integer constant |
| |
On 4/21/22 15:27, Randy Dunlap wrote: > Hi-- > > On 4/21/22 13:36, Guenter Roeck wrote: >> On 4/21/22 12:03, Naresh Kamboju wrote: >>> Linux mainline and linux next arm64 builds failed with gcc-7.3.x. >>> >>> drivers/usb/typec/tcpm/tcpm.c: In function 'run_state_machine': >>> drivers/usb/typec/tcpm/tcpm.c:4724:3: error: case label does not >>> reduce to an integer constant >>> case BDO_MODE_TESTDATA: >>> ^~~~ >>> make[4]: *** [scripts/Makefile.build:288: drivers/usb/typec/tcpm/tcpm.o] Error 1 >>> ^ >>> Reported-by: Linux Kernel Functional Testing <lkft@linaro.org> >>> >>> -- >> >> That code is several years old, the define is a constant, and I don't see >> a recent change in the code. What am I missing ? > > See a recent patch for the same problem in a different area: > > commit 1ef8715975de > Author: Borislav Petkov <bp@suse.de> > Date: Tue Apr 5 17:15:08 2022 +0200 > > ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant > > so those constants probably need to be cast to unsigned int. > (I guess) >
Turns out other versions of gcc are "affected" as well.
$ cc -Wall -std=c11 -pedantic -pedantic-errors testc.c testc.c: In function ‘main’: testc.c:16:2: error: case label is not an integer constant expression [-Wpedantic] 16 | case BDO_MODE_TESTDATA: | ^~~~
... but _only_ with "-std=c11 -pedantic -pedantic-errors" or with "-fsanitize=shift".
It wants #define BDO_MODE_TESTDATA (8u << 28)
Pedantic indeed ...
Guenter
| |