On x86, I got

[...@gnu-6 divb]$ cat umod-2.c 
extern unsigned char z;

unsigned char
foo (unsigned char x, unsigned char y)
{
  z = x/y;
   return x % y;
}
[...@gnu-6 divb]$ gcc -S -O3 umod-2.c
[...@gnu-6 divb]$ cat umod-2.s
        .file   "umod-2.c"
        .text
        .p2align 4,,15
.globl foo
        .type   foo, @function
foo:
.LFB0:
        .cfi_startproc
        movzbl  %dil, %edi
        movzbl  %sil, %ecx
        xorl    %edx, %edx
        movl    %edi, %eax
        divb    %sil
        movb    %al, z(%rip)
        movl    %edi, %eax
        divw    %cx
        movl    %edx, %eax
        ret


-- 
           Summary: Very inefficient 8bit mod/div
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl dot tools at gmail dot com


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

Reply via email to