[LLVMdev] [Compiler-RT] [ARM] Where __aeabi_[il]div0 builtins should be implemented?
Jonathan Roelofs
jonathan at codesourcery.com
Fri Sep 5 11:32:30 PDT 2014
Sergey,
Not that it'll save you much hassle, but here's an implementation of
__aeabi_idiv0 and __aeabi_ldiv0 that I've been sitting on for a while.
I vaguely remember compnerd suggesting that I don't commit them to compiler_rt,
but I don't remember why.
Cheers,
Jon
On 9/5/14, 12:10 PM, Sergey Dmitrouk wrote:
> Hi,
>
> There are several places in compiler-rt which refer to __aeabi_idiv0.
> For example, in lib/builtins/arm/udivsi3.S:
>
> #ifdef __ARM_EABI__
> b __aeabi_idiv0
> #else
> JMP(lr)
> #endif
>
> At the same time there is no definition of it. It looks as if it was
> done intentionally so that third-party could provide custom handler for
> division by zero.
>
> IMHO It's not very consistent and looks odd as all other __aebi_*
> functions are provided by compiler-rt.
>
> Did I get it all right or maybe I'm missing something?
>
> libgcc provides both __aeabi_idiv0 and __aeabi_ldiv0 as weak symbols,
> any reasons not to do the same in compiler-rt? Or, to put it
> differently, why force external implementation of these functions?
>
> Thanks,
> Sergey
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
--
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded
-------------- next part --------------
//===-- aeabi_idiv0.c - EABI idiv0 implementation -------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifdef __ARM_EABI__
extern void __aeabi_idiv0() __attribute__((weak));
void __aeabi_idiv0() {
}
#endif
-------------- next part --------------
//===-- aeabi_ldiv0.c - EABI ldiv0 implementation -------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifdef __ARM_EABI__
extern void __aeabi_ldiv0() __attribute__((weak));
void __aeabi_ldiv0() {
}
#endif
More information about the llvm-dev
mailing list