• Nathan Chancellor's avatar
    lib/mpi: Eliminate unused umul_ppmm definitions for MIPS · b0c091ae
    Nathan Chancellor authored
    Clang errors out when building this macro:
    
    lib/mpi/generic_mpih-mul1.c:37:24: 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:652:20: note: expanded from macro 'umul_ppmm'
            : "=l" ((USItype)(w0)), \
                    ~~~~~~~~~~^~~
    lib/mpi/generic_mpih-mul1.c:37:3: error: invalid output constraint '=h'
    in asm
                    umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb);
                    ^
    lib/mpi/longlong.h:653:7: note: expanded from macro 'umul_ppmm'
                 "=h" ((USItype)(w1)) \
                 ^
    2 errors generated.
    
    The C version that is used for GCC 4.4 and up works well with clang;
    however, it is not currently being used because Clang masks itself
    as GCC 4.2.1 for compatibility reasons. As Nick points out, we require
    GCC 4.6 and newer in the kernel so we can eliminate all of the
    versioning checks and just use the C version of umul_ppmm for all
    supported compilers.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/605Suggested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    b0c091ae
longlong.h 39 KB