http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60018
Bug ID: 60018 Summary: Bogus conversion warning with optimization flag -O1 Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: chengniansun at gmail dot com The -Wconversion should not be affected by the optimization flags. For the following code, Gcc emits no warning with flag -O0, but one conversion warning with flag -O1. $: cat s.c extern void fn1(unsigned); extern void fn3(void); void fn2(void); void fn2() { fn1((fn3(), 0) || 0); } $: gcc-trunk -c -Wconversion -std=c11 -O0 s.c $: gcc-trunk -c -Wconversion -std=c11 -O1 s.c s.c: In function ‘fn2’: s.c:5:7: warning: conversion to ‘unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion] fn1((fn3(), 0) || 0); ^ $: gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/home/chengniansun/tools/gcc-trunk-binaries/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-trunk/configure --enable-languages=c,c++ --disable-multilib --prefix=/home/chengniansun/tools/gcc-trunk-binaries : (reconfigured) ../gcc-trunk/configure --enable-languages=c,c++ --disable-multilib --prefix=/home/chengniansun/tools/gcc-trunk-binaries : (reconfigured) ../gcc-trunk/configure --enable-languages=c,c++ --disable-multilib --prefix=/home/chengniansun/tools/gcc-trunk-binaries Thread model: posix gcc version 4.9.0 20140131 (experimental) (GCC)