On Fri, 21 Jun 2019 at 07:13, Mathieu Malaterre <ma...@debian.org> wrote: > > The header file `longlong.h` makes uses of GNU extensions, this trigger > an error when compiling this code with clang. Add a special flag to make > clang tolerate this syntax.
Another old copy of longlong.h in the kernel! This looks similar to another clang related warnings I fixed in the powerpc math-emu code. There's an updated version of these macros in GCC, and we updated the kernel version to match the GCC version. Can you see if a similar change would work here? https://lore.kernel.org/linuxppc-dev/43bcrq6zqdz9...@ozlabs.org/ https://git.kernel.org/torvalds/c/b682c8692442711684befe413cf93cf01c5324ea Cheers, Joel > > Silence the following warnings triggered using W=1: > > CC lib/mpi/generic_mpih-mul1.o > ../lib/mpi/generic_mpih-mul1.c:37:13: error: invalid use of a cast in a > inline asm context requiring an l-value: remove the cast or build with > -fheinous-gnu-extensions > umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb); > ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../lib/mpi/longlong.h:824:20: note: expanded from macro 'umul_ppmm' > : "=r" ((USItype) ph) \ > ~~~~~~~~~~^~ > > and > > CC lib/mpi/generic_mpih-mul2.o > ../lib/mpi/generic_mpih-mul2.c:36:13: error: invalid use of a cast in a > inline asm context requiring an l-value: remove the cast or build with > -fheinous-gnu-extensions > umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb); > ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../lib/mpi/longlong.h:824:20: note: expanded from macro 'umul_ppmm' > : "=r" ((USItype) ph) \ > ~~~~~~~~~~^~ > > 1 warning generated. > CC lib/mpi/generic_mpih-mul3.o > ../lib/mpi/generic_mpih-mul3.c:36:13: error: invalid use of a cast in a > inline asm context requiring an l-value: remove the cast or build with > -fheinous-gnu-extensions > umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb); > ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../lib/mpi/longlong.h:824:20: note: expanded from macro 'umul_ppmm' > : "=r" ((USItype) ph) \ > ~~~~~~~~~~^~ > > Or even: > > ../lib/mpi/mpih-div.c:99:16: error: invalid use of a cast in a inline asm > context requiring an l-value: remove the cast or build with > -fheinous-gnu-extensions > sub_ddmmss(n1, n0, n1, n0, d1, d0); > ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ > > Cc: Joel Stanley <j...@jms.id.au> > Cc: Masahiro Yamada <yamada.masah...@socionext.com> > Signed-off-by: Mathieu Malaterre <ma...@debian.org> > --- > lib/mpi/Makefile | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/lib/mpi/Makefile b/lib/mpi/Makefile > index d5874a7f5ff9..de4d96e988a3 100644 > --- a/lib/mpi/Makefile > +++ b/lib/mpi/Makefile > @@ -5,6 +5,13 @@ > > obj-$(CONFIG_MPILIB) = mpi.o > > +ifdef CONFIG_CC_IS_CLANG > +CFLAGS_generic_mpih-mul1.o += -fheinous-gnu-extensions > +CFLAGS_generic_mpih-mul2.o += -fheinous-gnu-extensions > +CFLAGS_generic_mpih-mul3.o += -fheinous-gnu-extensions > +CFLAGS_mpih-div.o += -fheinous-gnu-extensions > +endif > + > mpi-y = \ > generic_mpih-lshift.o \ > generic_mpih-mul1.o \ > -- > 2.20.1 >