This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
ARM miscompilation of __moddi3 on trunk
- From: Andrew Haley <aph-gcc at littlepinkcloud dot COM>
- To: gcc at gcc dot gnu dot org
- Date: Thu, 6 Sep 2007 16:58:04 +0100
- Subject: ARM miscompilation of __moddi3 on trunk
This simple test case:
#include <stdio.h>
int ten = 10;
int main()
{
printf ("%lld\n", 92233720368547758LL % ten);
return 0;
}
returns
0
because (afaics) __moddi3 is miscompiled.
Breakpoint 4, __moddi3 (u=92233720368547758, v=10)
at /home/aph/gcc/trunk/libgcc/../gcc/libgcc2.c:923
(gdb) fin
Run till exit from #0 __moddi3 (u=<value optimized out>, v=92233718306963466)
at /home/aph/gcc/trunk/libgcc/../gcc/libgcc2.c:919
0x00008474 in main () at ppp.c:7
Value returned is $3 = 0
Recompiling libgcc with -O0 fixes the problem:
(gdb)
(gdb) fin
Run till exit from #0 __moddi3 (u=92233720368547758, v=10)
at /home/aph/gcc/trunk/libgcc/../gcc/libgcc2.c:879
0x000084a4 in main () at ppp.c:7
Value returned is $4 = 8
And recompiling just _moddi3.o fixes it again.
Target: arm-linux-gnueabi
Configured with: /home/aph/gcc/trunk/configure --with-system-zlib --enable-threads=posix --enable-nls --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release --disable-multilib --disable-static arm-linux-gnueabi --disable-bootstrap --disable-sjlj-exceptions --prefix=/home/aph/gcc/install build_alias=arm-linux-gnueabi host_alias=arm-linux-gnueabi target_alias=arm-linux-gnueabi --enable-languages=c,c++,java --no-create --no-recursion
Andrew.