HomePhabricator

CodeGen: Improve generated IR for __builtin_mul_overflow(uint, uint, int)

Authored by tstellar on Dec 17 2020, 10:43 AM.

Description

CodeGen: Improve generated IR for __builtin_mul_overflow(uint, uint, int)

Add a special case for handling builtin_mul_overflow with unsigned
inputs and a signed output to avoid emitting the
muloti4 library
call on x86_64. muloti4 is not implemented in libgcc, so avoiding
this call fixes compilation of some programs that call
builtin_mul_overflow with these arguments.

For example, this fixes the build of cpio with clang, which includes code from
gnulib that calls __builtin_mul_overflow with these argument types.

Reviewed By: vsk

Differential Revision: https://reviews.llvm.org/D84405

Details