[ARM]__modsi3 call in android


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

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?


Hi Renato,
              I have pushed a patch here to fix the issue.

--Sumanth G