[llvm-dev] *** GMX Spamverdacht *** Re: clang 4.0.0: Invalid code for builtin floating point function with -mfloat-abi=hard -ffast-math (ARM)
Friedman, Eli via llvm-dev
llvm-dev at lists.llvm.org
Wed Jul 12 16:46:24 PDT 2017
Did anything ever happen here? This still appears to be broken on trunk.
-Eli
On 3/30/2017 4:12 PM, Peter Jakubek wrote:
> I think the problem is here:
>
> llvm\lib\Target\ARM\ARMISelLowering.cpp, line 187:
>
> if (!Subtarget->isTargetDarwin() && !Subtarget->isTargetIOS() &&
> !Subtarget->isTargetWatchOS()) {
> const auto &E = Subtarget->getTargetTriple().getEnvironment();
>
> bool IsHFTarget = E == Triple::EABIHF || E == Triple::GNUEABIHF ||
> E == Triple::MuslEABIHF;
> // Windows is a special case. Technically, we will replace all of
> the "GNU"
> // calls with calls to MSVCRT if appropriate and adjust the calling
> // convention then.
> IsHFTarget = IsHFTarget || Subtarget->isTargetWindows();
>
> for (int LCID = 0; LCID < RTLIB::UNKNOWN_LIBCALL; ++LCID)
> setLibcallCallingConv(static_cast<RTLIB::Libcall>(LCID),
> IsHFTarget ? CallingConv::ARM_AAPCS_VFP
> : CallingConv::ARM_AAPCS);
> }
>
> IsHFTarget is only true if the target is eabihf. -msoft-abi is
> completely ignored.
>
> cheers,
>
> Peter
>
> Am 30.03.2017 um 00:15 schrieb Renato Golin:
>> On 29 March 2017 at 02:33, Saleem Abdulrasool <compnerd at compnerd.org>
>> wrote:
>>> sin/cos are libm functions, and so a libcall to those need to honour
>>> the
>>> floating point ABI requests. The calling convention to be followed
>>> there
>>> should match `-mfloat-abi` (that is, -mfloat-abi=hard => AAPCS/VFP,
>>> -mfloat-abi=soft => AAPCS).
>>
>> Exactly, but they're not, and that's the problem. Do you have any idea
>> why -ffast-math would change their PCS for libc calls?
>>
>> The behaviour seems to have been by your patch
>> (https://reviews.llvm.org/rL291909), so maybe there's some
>> transformation that uses the run-time functions, or some other badly
>> coupled logic...
>>
>> cheers,
>> --renato
>>
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
More information about the llvm-dev
mailing list