Go back to sometimes assuming intristics are local.
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 10 Mar 2018 02:42:14 +0000 (02:42 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 10 Mar 2018 02:42:14 +0000 (02:42 +0000)
commit63c378d3436d15ec92cd3f30f6ff41d86cd4036d
tree5df696b4ab650c6ab3ecb69ace21db9f7065b782
parent042678bd555dcd3231c363cbc77fee6082b0a0ba
Go back to sometimes assuming intristics are local.

This fixes pr36674.

While it is valid for shouldAssumeDSOLocal to return false anytime,
always returning false for intrinsics is not optimal on i386 and also
hits a bug in the backend.

To use a plt, the caller must first setup ebx to handle the case of
that file being linked into a PIE executable or shared library. In
those cases the generated PLT uses ebx.

Currently we can produce "calll expf@plt" without setting ebx. We
could fix that by correctly setting ebx, but this would produce worse
code for the case where the runtime library is statically linked. It
would also required other tools to handle R_386_PLT32.

llvm-svn: 327198
llvm/lib/Target/TargetMachine.cpp
llvm/test/CodeGen/X86/finite-libcalls.ll
llvm/test/CodeGen/X86/fmaxnum.ll
llvm/test/CodeGen/X86/fminnum.ll
llvm/test/CodeGen/X86/fp-cvt.ll
llvm/test/CodeGen/X86/fp-intrinsics.ll
llvm/test/CodeGen/X86/half.ll
llvm/test/CodeGen/X86/memset-nonzero.ll
llvm/test/CodeGen/X86/negative-sin.ll
llvm/test/CodeGen/X86/scalar-fp-to-i64.ll
llvm/test/CodeGen/X86/vector-half-conversions.ll