[PATCH] powerpc/math-emu: Fix building with clang

Joel Stanley joel at jms.id.au
Mon Nov 12 22:33:34 AEDT 2018


On Sat, 3 Nov 2018 at 03:24, Nick Desaulniers <ndesaulniers at google.com> wrote:
>
> On Thu, Nov 1, 2018 at 8:37 PM Joel Stanley <joel at jms.id.au> wrote:
> >
> >   make CC=clang-8 ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-  ppc44x_defconfig
> >   make CC=clang-8 ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-
> >
> >   ...
> >
> >   arch/powerpc/math-emu/fnmsub.c:46:2: error: invalid use of a cast in a
> >   inline asm context requiring an l-value: remove the cast or build with
> >   -fheinous-gnu-extensions
> >           FP_ADD_D(R, T, B);
> >           ^~~~~~~~~~~~~~~~~
> >   ./include/math-emu/double.h:110:27: note: expanded from macro 'FP_ADD_D'
> >   #define FP_ADD_D(R,X,Y)                 _FP_ADD(D,2,R,X,Y)
> >                                           ^~~~~~~~~~~~~~~~~~
> >   ./include/math-emu/op-common.h:367:34: note: expanded from macro '_FP_ADD'
> >   #define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL(fs, wc, R, X, Y, '+')
> >                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >   ./include/math-emu/op-common.h:264:4: note: expanded from macro '_FP_ADD_INTERNAL'
> >             _FP_FRAC_ADD_##wc(R, X, Y);                                        \
> >             ^~~~~~~~~~~~~~~~~~~~~~~~~~
> >   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
>
> ^^^ Hi Joel, would you mind recompiling with
> `-fmacro-backtrace-limit=0` hacked in and including the full
> backtrace?  I'm curious if there's a more appropriate fix, but can't
> tell where the inline asm is that clang is complaining about.

Sure. Here's the full backtrace:

arch/powerpc/math-emu/fnmsub.c:46:2: error: invalid use of a cast in a
inline asm context requiring an l-value: remove
      the cast or build with -fheinous-gnu-extensions
        FP_ADD_D(R, T, B);
        ^~~~~~~~~~~~~~~~~
./include/math-emu/double.h:110:27: note: expanded from macro 'FP_ADD_D'
#define FP_ADD_D(R,X,Y)                 _FP_ADD(D,2,R,X,Y)
                                        ^~~~~~~~~~~~~~~~~~
./include/math-emu/op-common.h:367:34: note: expanded from macro '_FP_ADD'
#define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL(fs, wc, R, X, Y, '+')
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./include/math-emu/op-common.h:274:4: note: expanded from macro
'_FP_ADD_INTERNAL'
          _FP_FRAC_SUB_##wc(R, X, Y);                                        \
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
<scratch space>:268:1: note: expanded from here
_FP_FRAC_SUB_2
^
./include/math-emu/op-2.h:97:19: note: expanded from macro '_FP_FRAC_SUB_2'
  __FP_FRAC_SUB_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0)
  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<scratch space>:269:1: note: expanded from here
R_f1
^
./arch/powerpc/include/asm/sfp-machine.h:283:27: note: expanded from
macro 'sub_ddmmss'
               : "=r" ((USItype)(sh)),                                  \
                       ~~~~~~~~~~^~~


More information about the Linuxppc-dev mailing list