http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48783

--- Comment #4 from Andrew Stubbs <ams at gcc dot gnu.org> 2011-04-27 11:08:10 
UTC ---
Somewhat reduced testcase:

static void
f (unsigned int a)
{
  unsigned long long __res;
  if (~0ULL % (a / (a & -a)) == 0)
    { 
      asm ("": "+&r" (__res));
    }
}

int
g (unsigned int a)
{
  f (a);
}


This gives:

        .global __aeabi_uidiv
        .global __aeabi_uldivmod
        .text
        .align  2
        .global g
        .thumb
        .thumb_func
        .type   g, %function
g:
        .fnstart
.LFB1:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        push    {lr}
        .save {lr}
        ldr     pc, [sp], #4
        .fnend

So, both __aeabi_uidiv and __aeabi_uldivmod are declared global, but neither is
actually used as the code is optimized away.

Reply via email to