Compiler gives wrong warning for "comparison of promoted ~unsigned with unsigned" when compiling with ARM-ELF.
Submit script for building arm-elf toolchain and testcode. Compilation using; arm-elf-gcc -c cast.c -W cast.c: In function 'test_cast': cast.c:13: warning: comparison of promoted ~unsigned with unsigned Best Regards Fredrik Hederstierna ============ FILE: cast.c ============ typedef unsigned char u8_t; void test_cast(void) { unsigned char c1 = 0; unsigned char c2 = 0; u8_t u1 = 0; u8_t u2 = 0; if (c1 == (unsigned char)(~c2)) { } if (u1 == (u8_t)(~u2)) { // THIS WILL GIVE WARNING } } ======================== FILE: build_toolchain.sh ======================== set -e -x TARGET=arm-elf BINUTILS_VERSION=2.19 GCC_VERSION=4.3.2 NEWLIB_VERSION=1.16.0 GDB_VERSION=6.8 INSIGHT_VERSION=6.8 DEST="/usr/local/gcc/arm-elf-tools-$GCC_VERSION" BINUTILS_DIR="binutils-$BINUTILS_VERSION" GCC_DIR="gcc-$GCC_VERSION" NEWLIB_DIR="newlib-$NEWLIB_VERSION" GDB_DIR="gdb-$GDB_VERSION" INSIGHT_DIR="insight-$INSIGHT_VERSION" # set rwx access umask 022 # unpack tar-balls rm -fr "$BINUTILS_DIR" "$GCC_DIR" "$NEWLIB_DIR" "$GDB_DIR" "$INSIGHT_DIR" tar xvjf "binutils-$BINUTILS_VERSION.tar.bz2" tar xvjf "gcc-$GCC_VERSION.tar.bz2" tar xvzf "newlib-$NEWLIB_VERSION.tar.gz" tar xvjf "gdb-$GDB_VERSION.tar.bz2" tar xvjf "insight-$INSIGHT_VERSION.tar.bz2" cd "$GCC_DIR" ln -s "../$NEWLIB_DIR/newlib" newlib ln -s "../$NEWLIB_DIR/libgloss" libgloss cd .. rm -fr build mkdir -p build/binutils build/gcc build/gdb build/insight build/newlib # Build binutils cd build/binutils "../../$BINUTILS_DIR/configure" --target="$TARGET" --prefix="$DEST" --disable-nls make LDFLAGS=-s all install # Build GCC cd ../gcc PATH="$DEST/bin:$PATH" "../../$GCC_DIR/configure" --enable-languages=c,c++ --target="$TARGET" --prefix="$DEST" --with-gnu-as --with-gnu-ld --disable-nls --with-newlib --disable-__cxa_atexit --with-ecos make LDFLAGS=-s all all-gcc all-target-libstdc++-v3 install install-gcc install-target-libstdc++-v3 # Build GDB and Insight cd ../gdb # Without insight "../../$GDB_DIR/configure" --target="$TARGET" --prefix="$DEST" make -w all install cd ../insight # With insight "../../$INSIGHT_DIR/configure" --target="$TARGET" --prefix="$DEST" make -w all install # Remove uncompressed sources cd ../.. rm -fr "$BINUTILS_DIR" "$GCC_DIR" "$NEWLIB_DIR" "$GDB_DIR" "$INSIGHT_DIR" build -- Summary: Wrong warning comparison of promoted ~unsigned with unsigned Product: gcc Version: 4.3.2 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: fredrik dot hederstierna at securitas-direct dot com GCC host triplet: i686-pc-linux-gnu GCC target triplet: arm-elf-gcc http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38341