[all-commits] [llvm/llvm-project] d0eeb6: [X86ISelLowering] avoid emitting libcalls to __mul...
Nick Desaulniers via All-commits
all-commits at lists.llvm.org
Tue Sep 7 10:45:56 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: d0eeb64be5848a7832d13db9d69904db281d02e8
https://github.com/llvm/llvm-project/commit/d0eeb64be5848a7832d13db9d69904db281d02e8
Author: Nick Desaulniers <ndesaulniers at google.com>
Date: 2021-09-07 (Tue, 07 Sep 2021)
Changed paths:
M llvm/lib/Target/X86/X86ISelLowering.cpp
A llvm/test/CodeGen/X86/overflow-intrinsic-optimizations.ll
M llvm/test/CodeGen/X86/smul_fix_sat.ll
M llvm/test/CodeGen/X86/xmulo.ll
Log Message:
-----------
[X86ISelLowering] avoid emitting libcalls to __mulodi4()
Similar to D108842, D108844, and D108926.
__has_builtin(builtin_mul_overflow) returns true for 32b x86 targets,
but Clang is deferring to compiler RT when encountering long long types.
This breaks ARCH=i386 + CONFIG_BLK_DEV_NBD=y builds of the Linux kernel
that are using builtin_mul_overflow with these types for these targets.
If the semantics of __has_builtin mean "the compiler resolves these,
always" then we shouldn't conditionally emit a libcall.
This will still need to be worked around in the Linux kernel in order to
continue to support these builds of the Linux kernel for this
target with older releases of clang.
Link: https://bugs.llvm.org/show_bug.cgi?id=28629
Link: https://bugs.llvm.org/show_bug.cgi?id=35922
Link: https://github.com/ClangBuiltLinux/linux/issues/1438
Reviewed By: lebedev.ri, RKSimon
Differential Revision: https://reviews.llvm.org/D108928
More information about the All-commits
mailing list