Hi, I see there is an inconsistency in LLVM libc calls. For a modulo (reminder) operation, clang -target arm-none-linux-gnueabi generates "__modsi3". clang -target arm-none-eabi generates "__aeabi_idivmod" clang -target arm-linux-androideabi generates "__modsi3" Android bionic libc doesn't provide a __modsi3, instead it provides "__aeabi_idivmod". I wonder why no one has seen this issue so far. Is this a known bug ? If so, can I move head and push a custom lowering for SREM and UREM when targeted for Android? --Sumanth G -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150728/ede031fb/attachment.html>
On 28 July 2015 at 17:52, Sumanth Gundapaneni <sgundapa at codeaurora.org> wrote:> Android bionic libc doesn’t provide a __modsi3, instead it provides > “__aeabi_idivmod”.Hi Sumanth, Have a look at ARMSubtarget.h, functions: bool isTargetAEABI() They control the lowering of DIV/MOD calls in ARMISelLowering.cpp. Maybe Android needs to be in? cheers, --renato
Hi Renato, I have pushed a patch here to fix the issue. http://reviews.llvm.org/D11661 --Sumanth G -----Original Message----- From: Renato Golin [mailto:renato.golin at linaro.org] Sent: Tuesday, July 28, 2015 10:19 AM To: Sumanth Gundapaneni Cc: LLVM Dev Subject: Re: [ARM]__modsi3 call in android On 28 July 2015 at 17:52, Sumanth Gundapaneni <sgundapa at codeaurora.org> wrote:> Android bionic libc doesn’t provide a __modsi3, instead it provides > “__aeabi_idivmod”.Hi Sumanth, Have a look at ARMSubtarget.h, functions: bool isTargetAEABI() They control the lowering of DIV/MOD calls in ARMISelLowering.cpp. Maybe Android needs to be in? cheers, --renato