[LLVMdev] [Compiler-RT] [ARM] Where __aeabi_[il]div0 builtins should be implemented?

Saleem Abdulrasool compnerd at compnerd.org
Sun Sep 7 19:25:44 PDT 2014


On Sat, Sep 6, 2014 at 3:40 PM, Renato Golin <renato.golin at linaro.org>
wrote:

> On 6 September 2014 22:46, Saleem Abdulrasool <compnerd at compnerd.org>
> wrote:
> > I did dig into this further and it seems that they are, in fact,
> considered
> > part of the RT-ABI :-(.  Ive committed a simple conforming
> implementation in
> > SVN r217322.
>
> Hi Saleem,
>
> This implementation will differ from the current sdiv's expected
> (return 0) if called from a place that doesn't mov r0, #0 just before
> calling div0.
>

Why not adjust this instead?


> ARM and GCC both throw an exception, and on non-EABI ARM, we're
> returning zero, so it would be good to have at least one consistent
> behaviour.
>

I think its better to avoid pulling in a dependency on the target libc,
particularly if you want to permit the use of compiler-rt in a bare-metal
environment.  This implementation conforms to the specification and can be
overridden if the libc wishes to catch the div-by-zero.

We could use __rt_raise(2, 2), which would need to call signal as well, so
you end up growing a dependency on the target environment's libc
implementation.  I think that expanding the responsibility of compiler-rt
from supporting the code generation from the compiler to integrating into
the target environment's libc can be problematic.


> I think we should return zero on both idiv0 and ldiv0 and move the
> "mov r0, #0" inside the #else for now.
>

Why 0 and not infinity?  Or some other value?


> cheers,
> --renato


-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140907/b1effd40/attachment.html>


More information about the llvm-dev mailing list