http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59420
Bug ID: 59420 Summary: arm: broken code generated (memset from newlib 2.0) Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: holler at ahsoftware dot de Created attachment 31396 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31396&action=edit memset.i Using gcc (4.8.2) to compile newlib 2.0 broken code will be generated for memset. Target was an ARM cortex-m3. I believe that happens for 4.7.3 too, but I'm totally sure if I'm not just had another bug with 4.7.3 (would have to verify it). Compiler was cross-gcc build on Gentoo with crossdev. gcc -v: Target: arm-cortexm3-eabi Configured with: /var/tmp/portage/cross-arm-cortexm3-eabi/gcc-4.8.2/work/gcc-4.8.2/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/arm-cortexm3-eabi/gcc-bin/4.8.2 --includedir=/usr/lib/gcc/arm-cortexm3-eabi/4.8.2/include --datadir=/usr/share/gcc-data/arm-cortexm3-eabi/4.8.2 --mandir=/usr/share/gcc-data/arm-cortexm3-eabi/4.8.2/man --infodir=/usr/share/gcc-data/arm-cortexm3-eabi/4.8.2/info --with-gxx-include-dir=/usr/lib/gcc/arm-cortexm3-eabi/4.8.2/include/g++-v4 --host=x86_64-pc-linux-gnu --target=arm-cortexm3-eabi --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --without-cloog --disable-lto --disable-nls --with-system-zlib --enable-obsolete --disable-werror --enable-secureplt --disable-multilib --disable-libmudflap --disable-libssp --disable-libgomp --with-python-dir=/share/gcc-data/arm-cortexm3-eabi/4.8.2/python --enable-poison-system-directories --enable-checking=release --disable-libgcj --enable-libstdcxx-time --disable-libquadmath --enable-languages=c,c++ --with-sysroot=/usr/arm-cortexm3-eabi --disable-bootstrap --with-newlib --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.8.2 p1.0, pie-0.5.8' --with-mode=thumb --with-cpu=cortex-m3 --with-float=soft Thread model: single gcc version 4.8.2 (Gentoo 4.8.2 p1.0, pie-0.5.8) The broken code was compiled with: make[5]: Entering directory `/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/build/arm-cortexm3-eabi/newlib/libc/string' arm-cortexm3-eabi-gcc -B/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/build/arm-cortexm3-eabi/newlib/ -isystem /var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/build/arm-cortexm3-eabi/newlib/targ-include -isystem /var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/newlib-2.0.0/newlib/libc/include -B/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/build/arm-cortexm3-eabi/libgloss/arm -L/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/build/arm-cortexm3-eabi/libgloss/libnosys -L/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/newlib-2.0.0/libgloss/arm -DPACKAGE_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"2.0.0\" -DPACKAGE_STRING=\"newlib\ 2.0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I. -I/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/newlib-2.0.0/newlib/libc/string -D__SINGLE_THREAD__ -DARM_RDI_MONITOR -fno-builtin -g -O2 -O3 -pipe -fomit-frame-pointer -std=gnu99 -save-temps -c -o lib_a-memset.o `test -f 'memset.c' || echo '/var/tmp/portage/cross-arm-cortexm3-eabi/newlib-2.0.0/work/newlib-2.0.0/newlib/libc/string/'`memset.c If more information is necessary or helpful, please just notify me.