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

            Bug ID: 60021
           Summary: Inconsistent -Wsign-compare warnings for -O0 and -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

Gcc emits a -Wsign-compare warning for the following test case with the
optimization flag -O0, but no warning with -O1.

$: cat s.c.v2.c
typedef long int64_t;
void fn1(unsigned, char, long);
void fn1(unsigned p_26, char c, long l) { /*    */
  const char l_1051 = 0;
  int64_t *l_1059 = &l;
  char *l_1062 = &c;
  p_26 < (*l_1062 = (1L == (*l_1059 = 0)) <= l_1051);
}
$: gcc-trunk -c -Wsign-compare -O0 s.c
s.c: In function ‘fn1’:
s.c:7:8: warning: comparison between signed and unsigned integer expressions
[-Wsign-compare]
   p_26 < (*l_1062 = (1L == (*l_1059 = 0)) <= l_1051);
        ^
$: gcc-trunk -c -Wsign-compare -O1 s.c
$: 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)
$:

Reply via email to