mailing list of musl libc
 help / color / mirror / code / Atom feed
* build with clang-3.4 warnings report
@ 2014-04-04 19:59 Abdoulaye Walsimou Gaye
  2014-04-04 20:47 ` Rich Felker
  0 siblings, 1 reply; 16+ messages in thread
From: Abdoulaye Walsimou Gaye @ 2014-04-04 19:59 UTC (permalink / raw)
  To: musl

Hello list,
Please find bellow warning generating while bluiding musl git 91d5aa06572d with clang.
Sorry this is a raw console output it may contain duplicates

Thanks,
awg

checking target system type... mips
checking whether compiler accepts -std=c99... yes
checking whether compiler accepts -nostdinc... yes
checking whether compiler accepts -ffreestanding... yes
checking whether compiler accepts -fexcess-precision=standard... no
checking whether compiler accepts -frounding-math... yes
checking whether compiler needs attribute((may_alias)) suppression... no
checking whether compiler accepts -fno-tree-loop-distribute-patterns... no
checking for optimization settings... using provided CFLAGS
checking whether compiler accepts -pipe... yes
checking whether compiler accepts -fno-unwind-tables... yes
checking whether compiler accepts -fno-asynchronous-unwind-tables... yes
checking whether compiler accepts -Wa,--noexecstack... yes
checking whether compiler accepts -Werror=implicit-function-declaration... yes
checking whether compiler accepts -Werror=implicit-int... yes
checking whether compiler accepts -Werror=pointer-sign... yes
checking whether compiler accepts -Werror=pointer-arith... yes
checking whether compiler accepts -fno-stack-protector... yes
checking whether linker accepts -Wl,--hash-style=both... no
checking whether linker accepts -Wl,-Bsymbolic-functions... yes
checking whether linker accepts -lgcc... yes
checking whether linker accepts -lgcc_eh... no
using compiler runtime libraries: -lgcc
checking preprocessor condition _MIPSEL || __MIPSEL || __MIPSEL__... true
checking preprocessor condition __mips_soft_float... false
configured for mips variant: mipsel
checking whether compiler's long double definition matches float.h... yes
creating config.mak... done
src/aio/aio_readwrite.c:20:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
               ~^~~~~~~~~
src/aio/aio_readwrite.c:18:20: note: previous initialization is here
   .__si_fields.__rt.si_sigval = sev->sigev_value,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/aio/lio_listio.c:47:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
               ~^~~~~~~~~
src/aio/lio_listio.c:45:20: note: previous initialization is here
   .__si_fields.__rt.si_sigval = sev->sigev_value,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/ctype/towctrans.c:239:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
   else return wc + 0x2d00 - 0x10a0;
   ^
src/ctype/towctrans.c:242:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
   else return wc + 0x10a0 - 0x2d00;
   ^
2 warnings generated.
In file included from src/errno/strerror.c:7:
src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
1133,
^~~~
1 warning generated.
src/internal/shgetc.c:16:15: warning: '&&' within '||' [-Wlogical-op-parentheses]
  if (f->shlim && f->shcnt >= f->shlim || (c=__uflow(f)) < 0) {
      ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ~~
src/internal/shgetc.c:16:15: note: place parentheses around the '&&' expression to silence this warning
  if (f->shlim && f->shcnt >= f->shlim || (c=__uflow(f)) < 0) {
               ^
      (                               )
1 warning generated.
In file included from src/ipc/semtimedop.c:2:
In file included from ./include/sys/sem.h:28:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
src/locale/iconv.c:142:13: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return s[e]+0U<<24 | s[e^1]<<16 | s[e^2]<<8 | s[e^3];
         ~~~~^~~~~
src/locale/iconv.c:142:13: note: place parentheses around the '+' expression to silence this warning
  return s[e]+0U<<24 | s[e^1]<<16 | s[e^2]<<8 | s[e^3];
             ^
         (      )
src/locale/iconv.c:323:7: warning: adding 'unsigned int' to a string does not append to the string [-Wstring-plus-int]
       +c%256}, &(size_t){4},
       ^~~~~~
src/locale/iconv.c:323:7: note: use array indexing to silence this warning
       +c%256}, &(size_t){4},
       ^
src/locale/iconv.c:343:33: warning: '&&' within '||' [-Wlogical-op-parentheses]
     if (c >= 93 || c>=0xc6-0x81 && d>0x52)
                 ~~ ~~~~~~~~~~~~~^~~~~~~~~
src/locale/iconv.c:343:33: note: place parentheses around the '&&' expression to silence this warning
     if (c >= 93 || c>=0xc6-0x81 && d>0x52)
                                 ^
                    (                     )
src/locale/iconv.c:370:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
                 ~~~^~~~~~
src/locale/iconv.c:370:20: note: place parentheses around the '-' expression to silence this warning
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
                    ^
                   (      )
src/locale/iconv.c:370:27: warning: '&' within '|' [-Wbitwise-op-parentheses]
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
     ~~~~~~~~~~~~~~~~~~~~~~^~~~~~
src/locale/iconv.c:370:27: note: place parentheses around the '&' expression to silence this warning
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
                           ^
     (                           )
src/locale/iconv.c:405:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
                    ~~~^~~~~~
src/locale/iconv.c:405:23: note: place parentheses around the '-' expression to silence this warning
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
                       ^
                      (      )
src/locale/iconv.c:405:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
      ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
src/locale/iconv.c:405:30: note: place parentheses around the '&' expression to silence this warning
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
                              ^
      (                             )
7 warnings generated.
src/malloc/malloc.c:130:52: warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return ((union { float v; uint32_t r; }){(int)x}.r+0x1fffff>>21) - 496;
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
src/malloc/malloc.c:130:52: note: place parentheses around the '+' expression to silence this warning
  return ((union { float v; uint32_t r; }){(int)x}.r+0x1fffff>>21) - 496;
                                                    ^
          (                                                  )
1 warning generated.
src/malloc/memalign.c:48:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)mem)[-1] = header&7 | new-mem;
                        ~~~~~~^~ ~
src/malloc/memalign.c:48:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)mem)[-1] = header&7 | new-mem;
                              ^
                        (       )
src/malloc/memalign.c:49:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)new)[-2] = footer&7 | new-mem;
                        ~~~~~~^~ ~
src/malloc/memalign.c:49:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)new)[-2] = footer&7 | new-mem;
                              ^
                        (       )
src/malloc/memalign.c:50:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)new)[-1] = header&7 | end-new;
                        ~~~~~~^~ ~
src/malloc/memalign.c:50:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)new)[-1] = header&7 | end-new;
                              ^
                        (       )
src/malloc/memalign.c:51:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)end)[-2] = footer&7 | end-new;
                        ~~~~~~^~ ~
src/malloc/memalign.c:51:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)end)[-2] = footer&7 | end-new;
                              ^
                        (       )
4 warnings generated.
src/math/fma.c:334:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/fma.c:276:22: warning: ^ has lower precedence than !=; != will be evaluated first [-Wparentheses]
   if (bits_lost != 1 ^ (int)(uhi.i & 1)) {
       ~~~~~~~~~~~~~~~^
src/math/fma.c:276:22: note: place parentheses around the '!=' expression to silence this warning
   if (bits_lost != 1 ^ (int)(uhi.i & 1)) {
                      ^
       (             )
src/math/fma.c:276:22: note: place parentheses around the ^ expression to evaluate it first
   if (bits_lost != 1 ^ (int)(uhi.i & 1)) {
                      ^
                    (                   )
1 warning generated.
src/math/fmaf.c:41:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/ilogb.c:6:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/ilogbf.c:6:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
In file included from src/math/j0f.c:17:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/j1f.c:17:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/jnf.c:17:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/lgammal.c:89:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
src/math/lrint.c:31:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/nearbyint.c:9:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/nearbyintf.c:7:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
In file included from src/math/sincos.c:14:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/sincosf.c:18:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/sincosl.c:2:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
src/misc/syslog.c:95:36: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                 ~~~^~~~~
src/misc/syslog.c:95:36: note: use array indexing to silence this warning
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                    ^
                                 &  [    ]
src/misc/syslog.c:95:51: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                                ~~~^~~~~
src/misc/syslog.c:95:51: note: use array indexing to silence this warning
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                                   ^
                                                &  [    ]
2 warnings generated.
src/network/__dns.c:138:13: warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
    q[0] = id+i >> 8;
           ~~^~ ~~
src/network/__dns.c:138:13: note: place parentheses around the '+' expression to silence this warning
    q[0] = id+i >> 8;
             ^
           (   )
1 warning generated.
src/network/dn_skipname.c:10:4: warning: add explicit braces to avoid dangling else [-Wdangling-else]
    else break;
    ^
1 warning generated.
In file included from src/network/htonl.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
In file included from src/network/htons.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
In file included from src/network/ntohl.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
In file included from src/network/ntohs.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
src/passwd/getgr_r.c:27:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   if (name && !strcmp(name, gr->gr_name)
       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/passwd/getgr_r.c:27:12: note: place parentheses around the '&&' expression to silence this warning
   if (name && !strcmp(name, gr->gr_name)
            ^
       (                                 )
src/passwd/getgr_r.c:28:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   || !name && gr->gr_gid == gid) {
   ~~ ~~~~~~^~~~~~~~~~~~~~~~~~~~
src/passwd/getgr_r.c:28:12: note: place parentheses around the '&&' expression to silence this warning
   || !name && gr->gr_gid == gid) {
            ^
      (                         )
2 warnings generated.
src/passwd/getpw_r.c:24:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   if (name && !strcmp(name, pw->pw_name)
       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/passwd/getpw_r.c:24:12: note: place parentheses around the '&&' expression to silence this warning
   if (name && !strcmp(name, pw->pw_name)
            ^
       (                                 )
src/passwd/getpw_r.c:25:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   || !name && pw->pw_uid == uid) {
   ~~ ~~~~~~^~~~~~~~~~~~~~~~~~~~
src/passwd/getpw_r.c:25:12: note: place parentheses around the '&&' expression to silence this warning
   || !name && pw->pw_uid == uid) {
            ^
      (                         )
2 warnings generated.
src/prng/__rand48_step.c:6:31: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  x = xi[0] | xi[1]<<16 | xi[2]+0ULL<<32;
                          ~~~~~^~~~~~~
src/prng/__rand48_step.c:6:31: note: place parentheses around the '+' expression to silence this warning
  x = xi[0] | xi[1]<<16 | xi[2]+0ULL<<32;
                               ^
                          (         )
src/prng/__rand48_step.c:7:31: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  a = lc[0] | lc[1]<<16 | lc[2]+0ULL<<32;
                          ~~~~~^~~~~~~
src/prng/__rand48_step.c:7:31: note: place parentheses around the '+' expression to silence this warning
  a = lc[0] | lc[1]<<16 | lc[2]+0ULL<<32;
                               ^
                          (         )
2 warnings generated.
src/regex/regcomp.c:2659:24: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
   if (((lit)->code_min == -4))
        ~~~~~~~~~~~~~~~~^~~~~
src/regex/regcomp.c:2659:24: note: remove extraneous parentheses around the comparison to silence this warning
   if (((lit)->code_min == -4))
       ~                ^    ~
src/regex/regcomp.c:2659:24: note: use '=' to turn this equality comparison into an assignment
   if (((lit)->code_min == -4))
                        ^~
                        =
1 warning generated.
src/stdio/vfprintf.c:169:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
               ~~~~~^~~~
src/stdio/vfprintf.c:169:20: note: place parentheses around the '-' expression to silence this warning
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
                    ^
                 (      )
src/stdio/vfprintf.c:169:36: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
                               ~~~~~^~~~
src/stdio/vfprintf.c:169:36: note: place parentheses around the '-' expression to silence this warning
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
                                    ^
                                 (      )
src/stdio/vfprintf.c:221:26: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  } else if (fl & (1U<<'+'-' ')) {
                     ~~~~~^~~~
src/stdio/vfprintf.c:221:26: note: place parentheses around the '-' expression to silence this warning
  } else if (fl & (1U<<'+'-' ')) {
                          ^
                       (      )
src/stdio/vfprintf.c:223:26: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  } else if (fl & (1U<<' '-' ')) {
                     ~~~~~^~~~
src/stdio/vfprintf.c:223:26: note: place parentheses around the '-' expression to silence this warning
  } else if (fl & (1U<<' '-' ')) {
                          ^
                       (      )
src/stdio/vfprintf.c:230:36: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, 3+pl, fl&~(1U<<'0'-' '));
                               ~~~~~^~~~
src/stdio/vfprintf.c:230:36: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, 3+pl, fl&~(1U<<'0'-' '));
                                    ^
                                 (      )
src/stdio/vfprintf.c:233:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, 3+pl, fl^(1U<<'-'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:233:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, 3+pl, fl^(1U<<'-'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:273:41: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (s-buf==1 && (y||p>0||(fl&(1U<<'#'-' ')))) *s++='.';
                                    ~~~~~^~~~
src/stdio/vfprintf.c:273:41: note: place parentheses around the '-' expression to silence this warning
    if (s-buf==1 && (y||p>0||(fl&(1U<<'#'-' ')))) *s++='.';
                                         ^
                                      (      )
src/stdio/vfprintf.c:283:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:283:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:287:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:287:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:377:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (!(fl&(1U<<'#'-' '))) {
               ~~~~~^~~~
src/stdio/vfprintf.c:377:20: note: place parentheses around the '-' expression to silence this warning
   if (!(fl&(1U<<'#'-' '))) {
                    ^
                 (      )
src/stdio/vfprintf.c:387:32: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  l = 1 + p + (p || (fl&(1U<<'#'-' ')));
                           ~~~~~^~~~
src/stdio/vfprintf.c:387:32: note: place parentheses around the '-' expression to silence this warning
  l = 1 + p + (p || (fl&(1U<<'#'-' ')));
                                ^
                             (      )
src/stdio/vfprintf.c:400:34: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                             ~~~~~^~~~
src/stdio/vfprintf.c:400:34: note: place parentheses around the '-' expression to silence this warning
  pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                                  ^
                               (      )
src/stdio/vfprintf.c:410:24: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (p || (fl&(1U<<'#'-' '))) out(f, ".", 1);
                   ~~~~~^~~~
src/stdio/vfprintf.c:410:24: note: place parentheses around the '-' expression to silence this warning
   if (p || (fl&(1U<<'#'-' '))) out(f, ".", 1);
                        ^
                     (      )
src/stdio/vfprintf.c:425:26: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
     if (p>0||(fl&(1U<<'#'-' '))) out(f, ".", 1);
                     ~~~~~^~~~
src/stdio/vfprintf.c:425:26: note: place parentheses around the '-' expression to silence this warning
     if (p>0||(fl&(1U<<'#'-' '))) out(f, ".", 1);
                          ^
                       (      )
src/stdio/vfprintf.c:434:34: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                             ~~~~~^~~~
src/stdio/vfprintf.c:434:34: note: place parentheses around the '-' expression to silence this warning
  pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                                  ^
                               (      )
src/stdio/vfprintf.c:489:47: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                          ~~~~~^~~~
src/stdio/vfprintf.c:489:47: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                               ^
                                            (      )
src/stdio/vfprintf.c:489:61: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                        ~~~~~^~~~
src/stdio/vfprintf.c:489:61: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                             ^
                                                          (      )
src/stdio/vfprintf.c:489:75: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfprintf.c:489:75: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfprintf.c:489:89: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfprintf.c:489:89: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfprintf.c:489:103: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfprintf.c:489:103: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfprintf.c:489:118: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~~^~~~
src/stdio/vfprintf.c:489:118: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(       )
src/stdio/vfprintf.c:489:132: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~^~~~
src/stdio/vfprintf.c:489:132: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(     )
src/stdio/vfprintf.c:490:16: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl |= 1U<<*s-' ';
            ~~~~^~~~
src/stdio/vfprintf.c:490:16: note: place parentheses around the '-' expression to silence this warning
    fl |= 1U<<*s-' ';
                ^
              (     )
src/stdio/vfprintf.c:503:25: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                    ~~~~~^~~~
src/stdio/vfprintf.c:503:25: note: place parentheses around the '-' expression to silence this warning
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                         ^
                      (      )
src/stdio/vfprintf.c:550:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
               ~~~~~^~~~
src/stdio/vfprintf.c:550:20: note: place parentheses around the '-' expression to silence this warning
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
                    ^
                 (      )
src/stdio/vfprintf.c:550:42: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
                                     ~~~~~^~~~
src/stdio/vfprintf.c:550:42: note: place parentheses around the '-' expression to silence this warning
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
                                          ^
                                       (      )
src/stdio/vfprintf.c:567:18: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl |= (1U<<'#'-' ');
             ~~~~~^~~~
src/stdio/vfprintf.c:567:18: note: place parentheses around the '-' expression to silence this warning
    fl |= (1U<<'#'-' ');
                  ^
               (      )
src/stdio/vfprintf.c:570:31: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (arg.i && (fl & (1U<<'#'-' '))) prefix+=(t>>4), pl=2;
                          ~~~~~^~~~
src/stdio/vfprintf.c:570:31: note: place parentheses around the '-' expression to silence this warning
    if (arg.i && (fl & (1U<<'#'-' '))) prefix+=(t>>4), pl=2;
                               ^
                            (      )
src/stdio/vfprintf.c:574:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if ((fl&(1U<<'#'-' ')) && arg.i) prefix+=5, pl=1;
               ~~~~~^~~~
src/stdio/vfprintf.c:574:20: note: place parentheses around the '-' expression to silence this warning
    if ((fl&(1U<<'#'-' ')) && arg.i) prefix+=5, pl=1;
                    ^
                 (      )
src/stdio/vfprintf.c:580:28: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    } else if (fl & (1U<<'+'-' ')) {
                       ~~~~~^~~~
src/stdio/vfprintf.c:580:28: note: place parentheses around the '-' expression to silence this warning
    } else if (fl & (1U<<'+'-' ')) {
                            ^
                         (      )
src/stdio/vfprintf.c:582:28: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    } else if (fl & (1U<<' '-' ')) {
                       ~~~~~^~~~
src/stdio/vfprintf.c:582:28: note: place parentheses around the '-' expression to silence this warning
    } else if (fl & (1U<<' '-' ')) {
                            ^
                         (      )
src/stdio/vfprintf.c:588:29: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (p>=0) fl &= ~(1U<<'0'-' ');
                        ~~~~~^~~~
src/stdio/vfprintf.c:588:29: note: place parentheses around the '-' expression to silence this warning
    if (p>=0) fl &= ~(1U<<'0'-' ');
                             ^
                          (      )
src/stdio/vfprintf.c:597:19: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl &= ~(1U<<'0'-' ');
              ~~~~~^~~~
src/stdio/vfprintf.c:597:19: note: place parentheses around the '-' expression to silence this warning
    fl &= ~(1U<<'0'-' ');
                   ^
                (      )
src/stdio/vfprintf.c:606:19: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl &= ~(1U<<'0'-' ');
              ~~~~~^~~~
src/stdio/vfprintf.c:606:19: note: place parentheses around the '-' expression to silence this warning
    fl &= ~(1U<<'0'-' ');
                   ^
                (      )
src/stdio/vfprintf.c:622:33: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    pad(f, ' ', w, p, fl^(1U<<'-'-' '));
                            ~~~~~^~~~
src/stdio/vfprintf.c:622:33: note: place parentheses around the '-' expression to silence this warning
    pad(f, ' ', w, p, fl^(1U<<'-'-' '));
                                 ^
                              (      )
src/stdio/vfprintf.c:636:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, '0', w, pl+p, fl^(1U<<'0'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:636:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, '0', w, pl+p, fl^(1U<<'0'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:639:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, pl+p, fl^(1U<<'-'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:639:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, pl+p, fl^(1U<<'-'-' '));
                                   ^
                                (      )
37 warnings generated.
src/stdio/vfwprintf.c:212:47: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                          ~~~~~^~~~
src/stdio/vfwprintf.c:212:47: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                               ^
                                            (      )
src/stdio/vfwprintf.c:212:61: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                        ~~~~~^~~~
src/stdio/vfwprintf.c:212:61: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                             ^
                                                          (      )
src/stdio/vfwprintf.c:212:75: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfwprintf.c:212:75: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfwprintf.c:212:89: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfwprintf.c:212:89: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfwprintf.c:212:103: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfwprintf.c:212:103: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfwprintf.c:212:118: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~~^~~~
src/stdio/vfwprintf.c:212:118: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(       )
src/stdio/vfwprintf.c:212:132: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~^~~~
src/stdio/vfwprintf.c:212:132: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(     )
src/stdio/vfwprintf.c:213:16: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl |= 1U<<*s-' ';
            ~~~~^~~~
src/stdio/vfwprintf.c:213:16: note: place parentheses around the '-' expression to silence this warning
    fl |= 1U<<*s-' ';
                ^
              (     )
src/stdio/vfwprintf.c:226:25: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                    ~~~~~^~~~
src/stdio/vfwprintf.c:226:25: note: place parentheses around the '-' expression to silence this warning
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                         ^
                      (      )
src/stdio/vfwprintf.c:291:21: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                ~~~~~^~~~
src/stdio/vfwprintf.c:291:21: note: place parentheses around the '-' expression to silence this warning
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                     ^
                  (      )
src/stdio/vfwprintf.c:293:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
               ~~~~~^~~~
src/stdio/vfwprintf.c:293:20: note: place parentheses around the '-' expression to silence this warning
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                    ^
                 (      )
src/stdio/vfwprintf.c:303:21: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                ~~~~~^~~~
src/stdio/vfwprintf.c:303:21: note: place parentheses around the '-' expression to silence this warning
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                     ^
                  (      )
src/stdio/vfwprintf.c:310:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
               ~~~~~^~~~
src/stdio/vfwprintf.c:310:20: note: place parentheses around the '-' expression to silence this warning
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                    ^
                 (      )
src/stdio/vfwprintf.c:316:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "#"+!(fl & (1U<<'#'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:316:23: note: place parentheses around the '-' expression to silence this warning
    "#"+!(fl & (1U<<'#'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:316:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "#"+!(fl & (1U<<'#'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:316:7: note: use array indexing to silence this warning
    "#"+!(fl & (1U<<'#'-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:317:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "+"+!(fl & (1U<<'+'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:317:23: note: place parentheses around the '-' expression to silence this warning
    "+"+!(fl & (1U<<'+'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:317:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "+"+!(fl & (1U<<'+'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:317:7: note: use array indexing to silence this warning
    "+"+!(fl & (1U<<'+'-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:318:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "-"+!(fl & (1U<<'-'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:318:23: note: place parentheses around the '-' expression to silence this warning
    "-"+!(fl & (1U<<'-'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:318:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "-"+!(fl & (1U<<'-'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:318:7: note: use array indexing to silence this warning
    "-"+!(fl & (1U<<'-'-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:319:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    " "+!(fl & (1U<<' '-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:319:23: note: place parentheses around the '-' expression to silence this warning
    " "+!(fl & (1U<<' '-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:319:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    " "+!(fl & (1U<<' '-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:319:7: note: use array indexing to silence this warning
    " "+!(fl & (1U<<' '-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:320:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "0"+!(fl & (1U<<'0'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:320:23: note: place parentheses around the '-' expression to silence this warning
    "0"+!(fl & (1U<<'0'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:320:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "0"+!(fl & (1U<<'0'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:320:7: note: use array indexing to silence this warning
    "0"+!(fl & (1U<<'0'-' ')),
       ^
    &  [                     ]
23 warnings generated.
src/thread/cancel_impl.c:49:44: warning: '&&' within '||' [-Wlogical-op-parentheses]
  if (self->cancelasync || ip >= __cp_begin && ip < __cp_end) {
                        ~~ ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
src/thread/cancel_impl.c:49:44: note: place parentheses around the '&&' expression to silence this warning
  if (self->cancelasync || ip >= __cp_begin && ip < __cp_end) {
                                            ^
                           (                                )
1 warning generated.
src/time/localtime_r.c:9:9: warning: comparison of constant -67908586910515200 with expression of type 'const time_t' (aka 'const long') is always false [-Wtautological-constant-out-of-range-compare]
  if (*t < (-1-0x7fffffff) * 31622400LL || *t > 0x7fffffff * 31622400LL) {
      ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/time/localtime_r.c:9:46: warning: comparison of constant 67908586878892800 with expression of type 'const time_t' (aka 'const long') is always false [-Wtautological-constant-out-of-range-compare]
  if (*t < (-1-0x7fffffff) * 31622400LL || *t > 0x7fffffff * 31622400LL) {
                                           ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
src/aio/aio_readwrite.c:20:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
               ~^~~~~~~~~
src/aio/aio_readwrite.c:18:20: note: previous initialization is here
   .__si_fields.__rt.si_sigval = sev->sigev_value,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/aio/lio_listio.c:47:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
               ~^~~~~~~~~
src/aio/lio_listio.c:45:20: note: previous initialization is here
   .__si_fields.__rt.si_sigval = sev->sigev_value,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/ctype/towctrans.c:239:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
   else return wc + 0x2d00 - 0x10a0;
   ^
src/ctype/towctrans.c:242:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
   else return wc + 0x10a0 - 0x2d00;
   ^
2 warnings generated.
In file included from src/errno/strerror.c:7:
src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
1133,
^~~~
1 warning generated.
src/internal/shgetc.c:16:15: warning: '&&' within '||' [-Wlogical-op-parentheses]
  if (f->shlim && f->shcnt >= f->shlim || (c=__uflow(f)) < 0) {
      ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ~~
src/internal/shgetc.c:16:15: note: place parentheses around the '&&' expression to silence this warning
  if (f->shlim && f->shcnt >= f->shlim || (c=__uflow(f)) < 0) {
               ^
      (                               )
1 warning generated.
In file included from src/ipc/semtimedop.c:2:
In file included from ./include/sys/sem.h:28:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/ldso/dynlink.c:91:
In file included from ./arch/mips/reloc.h:3:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
In file included from src/ldso/dynlink.c:91:
./arch/mips/reloc.h:94:15: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   rel[1] = sym-this->syms << 8 | 127;
            ~~~^~~~~~~~~~~ ~~
./arch/mips/reloc.h:94:15: note: place parentheses around the '-' expression to silence this warning
   rel[1] = sym-this->syms << 8 | 127;
               ^
            (             )
4 warnings generated.
src/locale/iconv.c:142:13: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return s[e]+0U<<24 | s[e^1]<<16 | s[e^2]<<8 | s[e^3];
         ~~~~^~~~~
src/locale/iconv.c:142:13: note: place parentheses around the '+' expression to silence this warning
  return s[e]+0U<<24 | s[e^1]<<16 | s[e^2]<<8 | s[e^3];
             ^
         (      )
src/locale/iconv.c:323:7: warning: adding 'unsigned int' to a string does not append to the string [-Wstring-plus-int]
       +c%256}, &(size_t){4},
       ^~~~~~
src/locale/iconv.c:323:7: note: use array indexing to silence this warning
       +c%256}, &(size_t){4},
       ^
src/locale/iconv.c:343:33: warning: '&&' within '||' [-Wlogical-op-parentheses]
     if (c >= 93 || c>=0xc6-0x81 && d>0x52)
                 ~~ ~~~~~~~~~~~~~^~~~~~~~~
src/locale/iconv.c:343:33: note: place parentheses around the '&&' expression to silence this warning
     if (c >= 93 || c>=0xc6-0x81 && d>0x52)
                                 ^
                    (                     )
src/locale/iconv.c:370:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
                 ~~~^~~~~~
src/locale/iconv.c:370:20: note: place parentheses around the '-' expression to silence this warning
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
                    ^
                   (      )
src/locale/iconv.c:370:27: warning: '&' within '|' [-Wbitwise-op-parentheses]
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
     ~~~~~~~~~~~~~~~~~~~~~~^~~~~~
src/locale/iconv.c:370:27: note: place parentheses around the '&' expression to silence this warning
     map[c*5/4+1]<<8-2*c%8 & 1023 ];
                           ^
     (                           )
src/locale/iconv.c:405:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
                    ~~~^~~~~~
src/locale/iconv.c:405:23: note: place parentheses around the '-' expression to silence this warning
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
                       ^
                      (      )
src/locale/iconv.c:405:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
      ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
src/locale/iconv.c:405:30: note: place parentheses around the '&' expression to silence this warning
      tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) {
                              ^
      (                             )
7 warnings generated.
src/malloc/malloc.c:130:52: warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return ((union { float v; uint32_t r; }){(int)x}.r+0x1fffff>>21) - 496;
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
src/malloc/malloc.c:130:52: note: place parentheses around the '+' expression to silence this warning
  return ((union { float v; uint32_t r; }){(int)x}.r+0x1fffff>>21) - 496;
                                                    ^
          (                                                  )
1 warning generated.
src/malloc/memalign.c:48:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)mem)[-1] = header&7 | new-mem;
                        ~~~~~~^~ ~
src/malloc/memalign.c:48:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)mem)[-1] = header&7 | new-mem;
                              ^
                        (       )
src/malloc/memalign.c:49:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)new)[-2] = footer&7 | new-mem;
                        ~~~~~~^~ ~
src/malloc/memalign.c:49:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)new)[-2] = footer&7 | new-mem;
                              ^
                        (       )
src/malloc/memalign.c:50:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)new)[-1] = header&7 | end-new;
                        ~~~~~~^~ ~
src/malloc/memalign.c:50:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)new)[-1] = header&7 | end-new;
                              ^
                        (       )
src/malloc/memalign.c:51:30: warning: '&' within '|' [-Wbitwise-op-parentheses]
  ((size_t *)end)[-2] = footer&7 | end-new;
                        ~~~~~~^~ ~
src/malloc/memalign.c:51:30: note: place parentheses around the '&' expression to silence this warning
  ((size_t *)end)[-2] = footer&7 | end-new;
                              ^
                        (       )
4 warnings generated.
src/math/fma.c:334:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/fma.c:276:22: warning: ^ has lower precedence than !=; != will be evaluated first [-Wparentheses]
   if (bits_lost != 1 ^ (int)(uhi.i & 1)) {
       ~~~~~~~~~~~~~~~^
src/math/fma.c:276:22: note: place parentheses around the '!=' expression to silence this warning
   if (bits_lost != 1 ^ (int)(uhi.i & 1)) {
                      ^
       (             )
src/math/fma.c:276:22: note: place parentheses around the ^ expression to evaluate it first
   if (bits_lost != 1 ^ (int)(uhi.i & 1)) {
                      ^
                    (                   )
1 warning generated.
src/math/fmaf.c:41:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/ilogb.c:6:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/ilogbf.c:6:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
In file included from src/math/j0f.c:17:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/j1f.c:17:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/jnf.c:17:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/lgammal.c:89:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
src/math/lrint.c:31:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/nearbyint.c:9:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
src/math/nearbyintf.c:7:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
         #pragma STDC FENV_ACCESS ON
                      ^
1 warning generated.
In file included from src/math/sincos.c:14:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/sincosf.c:18:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
In file included from src/math/sincosl.c:2:
In file included from ./src/internal/libm.h:20:
./include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
         ~~~~~~~~~~~~~~^~~~~~~
./include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
                       ^
         (                  )
3 warnings generated.
src/misc/syslog.c:95:36: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                 ~~~^~~~~
src/misc/syslog.c:95:36: note: use array indexing to silence this warning
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                    ^
                                 &  [    ]
src/misc/syslog.c:95:51: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                                ~~~^~~~~
src/misc/syslog.c:95:51: note: use array indexing to silence this warning
   priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
                                                   ^
                                                &  [    ]
2 warnings generated.
src/network/__dns.c:138:13: warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
    q[0] = id+i >> 8;
           ~~^~ ~~
src/network/__dns.c:138:13: note: place parentheses around the '+' expression to silence this warning
    q[0] = id+i >> 8;
             ^
           (   )
1 warning generated.
src/network/dn_skipname.c:10:4: warning: add explicit braces to avoid dangling else [-Wdangling-else]
    else break;
    ^
1 warning generated.
In file included from src/network/htonl.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
In file included from src/network/htons.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
In file included from src/network/ntohl.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
In file included from src/network/ntohs.c:2:
./include/byteswap.h:14:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                 ~ ~~~~~~^~~~~~~
./include/byteswap.h:14:25: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                         ^
                   (            )
./include/byteswap.h:14:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                 ~ ~~~~~~^~~~~~~~~
./include/byteswap.h:14:41: note: place parentheses around the '&' expression to silence this warning
  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
                                         ^
                                   (              )
./include/byteswap.h:19:24: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
         ~~~~~~~~~~~~~~~^~~~~~~
./include/byteswap.h:19:24: note: place parentheses around the '+' expression to silence this warning
  return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
                        ^
         (                   )
3 warnings generated.
src/passwd/getgr_r.c:27:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   if (name && !strcmp(name, gr->gr_name)
       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/passwd/getgr_r.c:27:12: note: place parentheses around the '&&' expression to silence this warning
   if (name && !strcmp(name, gr->gr_name)
            ^
       (                                 )
src/passwd/getgr_r.c:28:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   || !name && gr->gr_gid == gid) {
   ~~ ~~~~~~^~~~~~~~~~~~~~~~~~~~
src/passwd/getgr_r.c:28:12: note: place parentheses around the '&&' expression to silence this warning
   || !name && gr->gr_gid == gid) {
            ^
      (                         )
2 warnings generated.
src/passwd/getpw_r.c:24:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   if (name && !strcmp(name, pw->pw_name)
       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/passwd/getpw_r.c:24:12: note: place parentheses around the '&&' expression to silence this warning
   if (name && !strcmp(name, pw->pw_name)
            ^
       (                                 )
src/passwd/getpw_r.c:25:12: warning: '&&' within '||' [-Wlogical-op-parentheses]
   || !name && pw->pw_uid == uid) {
   ~~ ~~~~~~^~~~~~~~~~~~~~~~~~~~
src/passwd/getpw_r.c:25:12: note: place parentheses around the '&&' expression to silence this warning
   || !name && pw->pw_uid == uid) {
            ^
      (                         )
2 warnings generated.
src/prng/__rand48_step.c:6:31: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  x = xi[0] | xi[1]<<16 | xi[2]+0ULL<<32;
                          ~~~~~^~~~~~~
src/prng/__rand48_step.c:6:31: note: place parentheses around the '+' expression to silence this warning
  x = xi[0] | xi[1]<<16 | xi[2]+0ULL<<32;
                               ^
                          (         )
src/prng/__rand48_step.c:7:31: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
  a = lc[0] | lc[1]<<16 | lc[2]+0ULL<<32;
                          ~~~~~^~~~~~~
src/prng/__rand48_step.c:7:31: note: place parentheses around the '+' expression to silence this warning
  a = lc[0] | lc[1]<<16 | lc[2]+0ULL<<32;
                               ^
                          (         )
2 warnings generated.
src/regex/regcomp.c:2659:24: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
   if (((lit)->code_min == -4))
        ~~~~~~~~~~~~~~~~^~~~~
src/regex/regcomp.c:2659:24: note: remove extraneous parentheses around the comparison to silence this warning
   if (((lit)->code_min == -4))
       ~                ^    ~
src/regex/regcomp.c:2659:24: note: use '=' to turn this equality comparison into an assignment
   if (((lit)->code_min == -4))
                        ^~
                        =
1 warning generated.
src/stdio/vfprintf.c:169:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
               ~~~~~^~~~
src/stdio/vfprintf.c:169:20: note: place parentheses around the '-' expression to silence this warning
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
                    ^
                 (      )
src/stdio/vfprintf.c:169:36: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
                               ~~~~~^~~~
src/stdio/vfprintf.c:169:36: note: place parentheses around the '-' expression to silence this warning
  if (fl & ((1U<<'-'-' ') | (1U<<'0'-' ')) || l >= w) return;
                                    ^
                                 (      )
src/stdio/vfprintf.c:221:26: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  } else if (fl & (1U<<'+'-' ')) {
                     ~~~~~^~~~
src/stdio/vfprintf.c:221:26: note: place parentheses around the '-' expression to silence this warning
  } else if (fl & (1U<<'+'-' ')) {
                          ^
                       (      )
src/stdio/vfprintf.c:223:26: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  } else if (fl & (1U<<' '-' ')) {
                     ~~~~~^~~~
src/stdio/vfprintf.c:223:26: note: place parentheses around the '-' expression to silence this warning
  } else if (fl & (1U<<' '-' ')) {
                          ^
                       (      )
src/stdio/vfprintf.c:230:36: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, 3+pl, fl&~(1U<<'0'-' '));
                               ~~~~~^~~~
src/stdio/vfprintf.c:230:36: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, 3+pl, fl&~(1U<<'0'-' '));
                                    ^
                                 (      )
src/stdio/vfprintf.c:233:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, 3+pl, fl^(1U<<'-'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:233:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, 3+pl, fl^(1U<<'-'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:273:41: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (s-buf==1 && (y||p>0||(fl&(1U<<'#'-' ')))) *s++='.';
                                    ~~~~~^~~~
src/stdio/vfprintf.c:273:41: note: place parentheses around the '-' expression to silence this warning
    if (s-buf==1 && (y||p>0||(fl&(1U<<'#'-' ')))) *s++='.';
                                         ^
                                      (      )
src/stdio/vfprintf.c:283:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:283:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:287:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:287:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:377:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (!(fl&(1U<<'#'-' '))) {
               ~~~~~^~~~
src/stdio/vfprintf.c:377:20: note: place parentheses around the '-' expression to silence this warning
   if (!(fl&(1U<<'#'-' '))) {
                    ^
                 (      )
src/stdio/vfprintf.c:387:32: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  l = 1 + p + (p || (fl&(1U<<'#'-' ')));
                           ~~~~~^~~~
src/stdio/vfprintf.c:387:32: note: place parentheses around the '-' expression to silence this warning
  l = 1 + p + (p || (fl&(1U<<'#'-' ')));
                                ^
                             (      )
src/stdio/vfprintf.c:400:34: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                             ~~~~~^~~~
src/stdio/vfprintf.c:400:34: note: place parentheses around the '-' expression to silence this warning
  pad(f, '0', w, pl+l, fl^(1U<<'0'-' '));
                                  ^
                               (      )
src/stdio/vfprintf.c:410:24: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (p || (fl&(1U<<'#'-' '))) out(f, ".", 1);
                   ~~~~~^~~~
src/stdio/vfprintf.c:410:24: note: place parentheses around the '-' expression to silence this warning
   if (p || (fl&(1U<<'#'-' '))) out(f, ".", 1);
                        ^
                     (      )
src/stdio/vfprintf.c:425:26: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
     if (p>0||(fl&(1U<<'#'-' '))) out(f, ".", 1);
                     ~~~~~^~~~
src/stdio/vfprintf.c:425:26: note: place parentheses around the '-' expression to silence this warning
     if (p>0||(fl&(1U<<'#'-' '))) out(f, ".", 1);
                          ^
                       (      )
src/stdio/vfprintf.c:434:34: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
  pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                             ~~~~~^~~~
src/stdio/vfprintf.c:434:34: note: place parentheses around the '-' expression to silence this warning
  pad(f, ' ', w, pl+l, fl^(1U<<'-'-' '));
                                  ^
                               (      )
src/stdio/vfprintf.c:489:47: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                          ~~~~~^~~~
src/stdio/vfprintf.c:489:47: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                               ^
                                            (      )
src/stdio/vfprintf.c:489:61: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                        ~~~~~^~~~
src/stdio/vfprintf.c:489:61: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                             ^
                                                          (      )
src/stdio/vfprintf.c:489:75: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfprintf.c:489:75: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfprintf.c:489:89: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfprintf.c:489:89: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfprintf.c:489:103: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfprintf.c:489:103: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfprintf.c:489:118: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~~^~~~
src/stdio/vfprintf.c:489:118: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(       )
src/stdio/vfprintf.c:489:132: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~^~~~
src/stdio/vfprintf.c:489:132: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(     )
src/stdio/vfprintf.c:490:16: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl |= 1U<<*s-' ';
            ~~~~^~~~
src/stdio/vfprintf.c:490:16: note: place parentheses around the '-' expression to silence this warning
    fl |= 1U<<*s-' ';
                ^
              (     )
src/stdio/vfprintf.c:503:25: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                    ~~~~~^~~~
src/stdio/vfprintf.c:503:25: note: place parentheses around the '-' expression to silence this warning
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                         ^
                      (      )
src/stdio/vfprintf.c:550:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
               ~~~~~^~~~
src/stdio/vfprintf.c:550:20: note: place parentheses around the '-' expression to silence this warning
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
                    ^
                 (      )
src/stdio/vfprintf.c:550:42: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
                                     ~~~~~^~~~
src/stdio/vfprintf.c:550:42: note: place parentheses around the '-' expression to silence this warning
   if (fl & (1U<<'-'-' ')) fl &= ~(1U<<'0'-' ');
                                          ^
                                       (      )
src/stdio/vfprintf.c:567:18: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl |= (1U<<'#'-' ');
             ~~~~~^~~~
src/stdio/vfprintf.c:567:18: note: place parentheses around the '-' expression to silence this warning
    fl |= (1U<<'#'-' ');
                  ^
               (      )
src/stdio/vfprintf.c:570:31: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (arg.i && (fl & (1U<<'#'-' '))) prefix+=(t>>4), pl=2;
                          ~~~~~^~~~
src/stdio/vfprintf.c:570:31: note: place parentheses around the '-' expression to silence this warning
    if (arg.i && (fl & (1U<<'#'-' '))) prefix+=(t>>4), pl=2;
                               ^
                            (      )
src/stdio/vfprintf.c:574:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if ((fl&(1U<<'#'-' ')) && arg.i) prefix+=5, pl=1;
               ~~~~~^~~~
src/stdio/vfprintf.c:574:20: note: place parentheses around the '-' expression to silence this warning
    if ((fl&(1U<<'#'-' ')) && arg.i) prefix+=5, pl=1;
                    ^
                 (      )
src/stdio/vfprintf.c:580:28: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    } else if (fl & (1U<<'+'-' ')) {
                       ~~~~~^~~~
src/stdio/vfprintf.c:580:28: note: place parentheses around the '-' expression to silence this warning
    } else if (fl & (1U<<'+'-' ')) {
                            ^
                         (      )
src/stdio/vfprintf.c:582:28: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    } else if (fl & (1U<<' '-' ')) {
                       ~~~~~^~~~
src/stdio/vfprintf.c:582:28: note: place parentheses around the '-' expression to silence this warning
    } else if (fl & (1U<<' '-' ')) {
                            ^
                         (      )
src/stdio/vfprintf.c:588:29: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (p>=0) fl &= ~(1U<<'0'-' ');
                        ~~~~~^~~~
src/stdio/vfprintf.c:588:29: note: place parentheses around the '-' expression to silence this warning
    if (p>=0) fl &= ~(1U<<'0'-' ');
                             ^
                          (      )
src/stdio/vfprintf.c:597:19: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl &= ~(1U<<'0'-' ');
              ~~~~~^~~~
src/stdio/vfprintf.c:597:19: note: place parentheses around the '-' expression to silence this warning
    fl &= ~(1U<<'0'-' ');
                   ^
                (      )
src/stdio/vfprintf.c:606:19: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl &= ~(1U<<'0'-' ');
              ~~~~~^~~~
src/stdio/vfprintf.c:606:19: note: place parentheses around the '-' expression to silence this warning
    fl &= ~(1U<<'0'-' ');
                   ^
                (      )
src/stdio/vfprintf.c:622:33: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    pad(f, ' ', w, p, fl^(1U<<'-'-' '));
                            ~~~~~^~~~
src/stdio/vfprintf.c:622:33: note: place parentheses around the '-' expression to silence this warning
    pad(f, ' ', w, p, fl^(1U<<'-'-' '));
                                 ^
                              (      )
src/stdio/vfprintf.c:636:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, '0', w, pl+p, fl^(1U<<'0'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:636:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, '0', w, pl+p, fl^(1U<<'0'-' '));
                                   ^
                                (      )
src/stdio/vfprintf.c:639:35: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   pad(f, ' ', w, pl+p, fl^(1U<<'-'-' '));
                              ~~~~~^~~~
src/stdio/vfprintf.c:639:35: note: place parentheses around the '-' expression to silence this warning
   pad(f, ' ', w, pl+p, fl^(1U<<'-'-' '));
                                   ^
                                (      )
37 warnings generated.
src/stdio/vfwprintf.c:212:47: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                          ~~~~~^~~~
src/stdio/vfwprintf.c:212:47: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                               ^
                                            (      )
src/stdio/vfwprintf.c:212:61: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                        ~~~~~^~~~
src/stdio/vfwprintf.c:212:61: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
                                                             ^
                                                          (      )
src/stdio/vfwprintf.c:212:75: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfwprintf.c:212:75: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfwprintf.c:212:89: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfwprintf.c:212:89: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfwprintf.c:212:103: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~^~~~
src/stdio/vfwprintf.c:212:103: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(      )
src/stdio/vfwprintf.c:212:118: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~~~^~~~
src/stdio/vfwprintf.c:212:118: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(       )
src/stdio/vfwprintf.c:212:132: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
~~~~^~~~
src/stdio/vfwprintf.c:212:132: note: place parentheses around the '-' expression to silence this warning
   for (fl=0; (unsigned)*s-' '<32 && (((1U<<'#'-' ')|(1U<<'0'-' ')|(1U<<'-'-' ')|(1U<<' '-' ')|(1U<<'+'-' ')|(1U<<'\''-' '))&(1U<<*s-' ')); s++)
^
(     )
src/stdio/vfwprintf.c:213:16: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    fl |= 1U<<*s-' ';
            ~~~~^~~~
src/stdio/vfwprintf.c:213:16: note: place parentheses around the '-' expression to silence this warning
    fl |= 1U<<*s-' ';
                ^
              (     )
src/stdio/vfwprintf.c:226:25: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                    ~~~~~^~~~
src/stdio/vfwprintf.c:226:25: note: place parentheses around the '-' expression to silence this warning
    if (w<0) fl|=(1U<<'-'-' '), w=-w;
                         ^
                      (      )
src/stdio/vfwprintf.c:291:21: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                ~~~~~^~~~
src/stdio/vfwprintf.c:291:21: note: place parentheses around the '-' expression to silence this warning
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                     ^
                  (      )
src/stdio/vfwprintf.c:293:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
               ~~~~~^~~~
src/stdio/vfwprintf.c:293:20: note: place parentheses around the '-' expression to silence this warning
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                    ^
                 (      )
src/stdio/vfwprintf.c:303:21: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                ~~~~~^~~~
src/stdio/vfwprintf.c:303:21: note: place parentheses around the '-' expression to silence this warning
    if (!(fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                     ^
                  (      )
src/stdio/vfwprintf.c:310:20: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
               ~~~~~^~~~
src/stdio/vfwprintf.c:310:20: note: place parentheses around the '-' expression to silence this warning
    if ((fl&(1U<<'-'-' '))) fprintf(f, "%.*s", w-p, "");
                    ^
                 (      )
src/stdio/vfwprintf.c:316:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "#"+!(fl & (1U<<'#'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:316:23: note: place parentheses around the '-' expression to silence this warning
    "#"+!(fl & (1U<<'#'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:316:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "#"+!(fl & (1U<<'#'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:316:7: note: use array indexing to silence this warning
    "#"+!(fl & (1U<<'#'-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:317:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "+"+!(fl & (1U<<'+'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:317:23: note: place parentheses around the '-' expression to silence this warning
    "+"+!(fl & (1U<<'+'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:317:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "+"+!(fl & (1U<<'+'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:317:7: note: use array indexing to silence this warning
    "+"+!(fl & (1U<<'+'-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:318:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "-"+!(fl & (1U<<'-'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:318:23: note: place parentheses around the '-' expression to silence this warning
    "-"+!(fl & (1U<<'-'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:318:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "-"+!(fl & (1U<<'-'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:318:7: note: use array indexing to silence this warning
    "-"+!(fl & (1U<<'-'-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:319:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    " "+!(fl & (1U<<' '-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:319:23: note: place parentheses around the '-' expression to silence this warning
    " "+!(fl & (1U<<' '-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:319:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    " "+!(fl & (1U<<' '-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:319:7: note: use array indexing to silence this warning
    " "+!(fl & (1U<<' '-' ')),
       ^
    &  [                     ]
src/stdio/vfwprintf.c:320:23: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
    "0"+!(fl & (1U<<'0'-' ')),
                  ~~~~~^~~~
src/stdio/vfwprintf.c:320:23: note: place parentheses around the '-' expression to silence this warning
    "0"+!(fl & (1U<<'0'-' ')),
                       ^
                    (      )
src/stdio/vfwprintf.c:320:7: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
    "0"+!(fl & (1U<<'0'-' ')),
    ~~~^~~~~~~~~~~~~~~~~~~~~~
src/stdio/vfwprintf.c:320:7: note: use array indexing to silence this warning
    "0"+!(fl & (1U<<'0'-' ')),
       ^
    &  [                     ]
23 warnings generated.
src/thread/cancel_impl.c:49:44: warning: '&&' within '||' [-Wlogical-op-parentheses]
  if (self->cancelasync || ip >= __cp_begin && ip < __cp_end) {
                        ~~ ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
src/thread/cancel_impl.c:49:44: note: place parentheses around the '&&' expression to silence this warning
  if (self->cancelasync || ip >= __cp_begin && ip < __cp_end) {
                                            ^
                           (                                )
1 warning generated.
src/time/localtime_r.c:9:9: warning: comparison of constant -67908586910515200 with expression of type 'const time_t' (aka 'const long') is always false [-Wtautological-constant-out-of-range-compare]
  if (*t < (-1-0x7fffffff) * 31622400LL || *t > 0x7fffffff * 31622400LL) {
      ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/time/localtime_r.c:9:46: warning: comparison of constant 67908586878892800 with expression of type 'const time_t' (aka 'const long') is always false [-Wtautological-constant-out-of-range-compare]
  if (*t < (-1-0x7fffffff) * 31622400LL || *t > 0x7fffffff * 31622400LL) {
                                           ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-04 19:59 build with clang-3.4 warnings report Abdoulaye Walsimou Gaye
@ 2014-04-04 20:47 ` Rich Felker
  2014-04-05  1:06   ` Abdoulaye Walsimou Gaye
  0 siblings, 1 reply; 16+ messages in thread
From: Rich Felker @ 2014-04-04 20:47 UTC (permalink / raw)
  To: musl

On Fri, Apr 04, 2014 at 09:59:22PM +0200, Abdoulaye Walsimou Gaye wrote:
> src/aio/aio_readwrite.c:20:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
>   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
>               ~^~~~~~~~~
> src/aio/aio_readwrite.c:18:20: note: previous initialization is here
>   .__si_fields.__rt.si_sigval = sev->sigev_value,
>                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 1 warning generated.

This looks like an actual bug. If these two members overlap, we can't
store both.

> src/ctype/towctrans.c:239:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
>   else return wc + 0x2d00 - 0x10a0;
>   ^
> src/ctype/towctrans.c:242:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
>   else return wc + 0x10a0 - 0x2d00;
>   ^
> 2 warnings generated.

Bogus, so this looks like one we should disable from configure.

> In file included from src/errno/strerror.c:7:
> src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
> 1133,
> ^~~~
> 1 warning generated.

I thought this was fixed (and only on mips). The conversion in the
current source is not implicit but explicit.

> src/internal/shgetc.c:16:15: warning: '&&' within '||' [-Wlogical-op-parentheses]
>  if (f->shlim && f->shcnt >= f->shlim || (c=__uflow(f)) < 0) {
>      ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ~~
> src/internal/shgetc.c:16:15: note: place parentheses around the '&&' expression to silence this warning
>  if (f->shlim && f->shcnt >= f->shlim || (c=__uflow(f)) < 0) {
>               ^
>      (                               )
> 1 warning generated.

Bogus.

> In file included from src/ipc/semtimedop.c:2:
> In file included from ./include/sys/sem.h:28:
> ../include/endian.h:32:25: warning: '&' within '|' [-Wbitwise-op-parentheses]
>  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
>                 ~ ~~~~~~^~~~~~~
> ../include/endian.h:32:25: note: place parentheses around the '&' expression to silence this warning
>  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
>                         ^
>                   (            )
> ../include/endian.h:32:41: warning: '&' within '|' [-Wbitwise-op-parentheses]
>  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
>                                 ~ ~~~~~~^~~~~~~~~
> ../include/endian.h:32:41: note: place parentheses around the '&' expression to silence this warning
>  return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
>                                         ^
>                                   (              )
> ../include/endian.h:37:23: warning: operator '<<' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
>  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
>         ~~~~~~~~~~~~~~^~~~~~~
> ../include/endian.h:37:23: note: place parentheses around the '+' expression to silence this warning
>  return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
>                       ^
>         (                  )
> 3 warnings generated.

Another bogus one. Does -Wno-parentheses fail to silence these?

> src/locale/iconv.c:323:7: warning: adding 'unsigned int' to a string does not append to the string [-Wstring-plus-int]
>       +c%256}, &(size_t){4},
>       ^~~~~~
> src/locale/iconv.c:323:7: note: use array indexing to silence this warning
>       +c%256}, &(size_t){4},
>       ^

Another bogus one.

> src/math/fma.c:334:15: warning: pragma STDC FENV_ACCESS ON is not supported, ignoring pragma [-Wunknown-pragmas]
>         #pragma STDC FENV_ACCESS ON
>                      ^
> 1 warning generated.

We have -Wno-unknown-pragmas... so why is this appearing?

> src/regex/regcomp.c:2659:24: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
>   if (((lit)->code_min == -4))
>        ~~~~~~~~~~~~~~~~^~~~~
> src/regex/regcomp.c:2659:24: note: remove extraneous parentheses around the comparison to silence this warning
>   if (((lit)->code_min == -4))
>       ~                ^    ~
> src/regex/regcomp.c:2659:24: note: use '=' to turn this equality comparison into an assignment
>   if (((lit)->code_min == -4))
>                        ^~
>                        =
> 1 warning generated.

Another one, but these parens could be removed. I think they're a
leftover from removing other conditions in the same if statement.

> src/time/localtime_r.c:9:9: warning: comparison of constant -67908586910515200 with expression of type 'const time_t' (aka 'const long') is always false [-Wtautological-constant-out-of-range-compare]
>  if (*t < (-1-0x7fffffff) * 31622400LL || *t > 0x7fffffff * 31622400LL) {
>      ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> src/time/localtime_r.c:9:46: warning: comparison of constant 67908586878892800 with expression of type 'const time_t' (aka 'const long') is always false [-Wtautological-constant-out-of-range-compare]
>  if (*t < (-1-0x7fffffff) * 31622400LL || *t > 0x7fffffff * 31622400LL) {
>                                           ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~
> 2 warnings generated.

More bogus. It's not tautological; it's arch-specific whether it can
be true or not.

The second half of the email was all duplicates from the shared
library build.

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-04 20:47 ` Rich Felker
@ 2014-04-05  1:06   ` Abdoulaye Walsimou Gaye
  2014-04-05  1:54     ` Rich Felker
  0 siblings, 1 reply; 16+ messages in thread
From: Abdoulaye Walsimou Gaye @ 2014-04-05  1:06 UTC (permalink / raw)
  To: musl

OK I was not building with --enable-warnings! Here is another round without bogus warnings you rejected:
-Wstring-plus-int
-Wtautological-constant-out-of-range-compare

Thanks,
awg

src/aio/aio_readwrite.c:20:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
               ~^~~~~~~~~
src/aio/aio_readwrite.c:18:20: note: previous initialization is here
   .__si_fields.__rt.si_sigval = sev->sigev_value,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/aio/aio_readwrite.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy(void)
             ^
2 warnings generated.
src/aio/lio_listio.c:47:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
               ~^~~~~~~~~
src/aio/lio_listio.c:45:20: note: previous initialization is here
   .__si_fields.__rt.si_sigval = sev->sigev_value,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/env/__init_security.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy(void *ent)
             ^
1 warning generated.
src/env/__init_tls.c:46:14: warning: function 'simple' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void *simple(void *p)
              ^
1 warning generated.
src/env/__libc_start_main.c:9:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy() {}
             ^
1 warning generated.
In file included from src/errno/strerror.c:7:
src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
1133,
^~~~
1 warning generated.
src/exit/exit.c:7:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy()
             ^
1 warning generated.
src/exit/quick_exit.c:6:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy() { }
             ^

src/mman/mmap.c:9:13: warning: function 'dummy1' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy1(int x) { }
             ^
src/mman/mmap.c:10:13: warning: function 'dummy0' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy0(void) { }
             ^
2 warnings generated.
src/mman/munmap.c:5:13: warning: function 'dummy1' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy1(int x) { }
             ^
src/mman/munmap.c:6:13: warning: function 'dummy0' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy0(void) { }
             ^
2 warnings generated.
src/process/fork.c:7:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy(int x)
             ^
1 warning generated.
src/regex/regcomp.c:3123:18: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
     do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
          ~~~~~~~ ^ ~~~~~~~
src/regex/regcomp.c:3156:15: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
  do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
       ~~~~~~~ ^ ~~~~~~~
src/regex/regcomp.c:3181:15: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
  do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
       ~~~~~~~ ^ ~~~~~~~
src/regex/regcomp.c:3189:18: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
     do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
          ~~~~~~~ ^ ~~~~~~~
src/regex/regcomp.c:3206:18: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
     do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
          ~~~~~~~ ^ ~~~~~~~
src/regex/regcomp.c:3235:18: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
     do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
          ~~~~~~~ ^ ~~~~~~~
6 warnings generated.
src/signal/sigaction.c:11:18: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static pthread_t dummy(void) { return 0; }
                  ^
1 warning generated.
src/stdio/__stdio_exit.c:3:20: warning: variable 'dummy_file' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static FILE *const dummy_file = 0;
                    ^
1 warning generated.
src/stdio/__toread.c:16:18: warning: variable 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static const int dummy = 0;
                  ^
1 warning generated.
src/stdio/fflush.c:22:20: warning: variable 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static FILE *const dummy = 0;
                    ^
1 warning generated.

src/thread/cancel_dummy.c:4:13: warning: function 'sccp' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static long sccp(syscall_arg_t nr,
             ^
src/thread/cancel_dummy.c:13:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy()
             ^
2 warnings generated.
src/thread/cancellation.c:3:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy(struct __ptcb *cb)
             ^
1 warning generated.
src/thread/pthread_create.c:7:13: warning: function 'dummy_0' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy_0()
             ^
src/thread/pthread_create.c:111:21: warning: variable 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static const size_t dummy = 0;
                     ^
src/thread/pthread_create.c:114:20: warning: variable 'dummy_file' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static FILE *const dummy_file = 0;
                    ^
3 warnings generated.

src/time/timer_create.c:17:13: warning: function 'dummy_1' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static void dummy_1(pthread_t self)
             ^
1 warning generated.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05  1:06   ` Abdoulaye Walsimou Gaye
@ 2014-04-05  1:54     ` Rich Felker
  2014-04-05  9:04       ` Jens Gustedt
  2014-04-07 11:17       ` Oliver Schneider
  0 siblings, 2 replies; 16+ messages in thread
From: Rich Felker @ 2014-04-05  1:54 UTC (permalink / raw)
  To: musl

On Sat, Apr 05, 2014 at 03:06:03AM +0200, Abdoulaye Walsimou Gaye wrote:
> OK I was not building with --enable-warnings! Here is another round without bogus warnings you rejected:
> -Wstring-plus-int
> -Wtautological-constant-out-of-range-compare
> 
> Thanks,
> awg
> 
> src/aio/aio_readwrite.c:20:16: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
>   .__si_fields.__sigchld.si_pid = __pthread_self()->pid,
>               ~^~~~~~~~~
> src/aio/aio_readwrite.c:18:20: note: previous initialization is here
>   .__si_fields.__rt.si_sigval = sev->sigev_value,
>                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> src/aio/aio_readwrite.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
> static void dummy(void)
>             ^
> 2 warnings generated.

Like I said before, this looks real, and we need to look into it.

> src/env/__init_security.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
> static void dummy(void *ent)
>             ^
> 1 warning generated.

This is a bug in the compiler; the function dummy has an externally
visible alias, so it will not be omitted (and if it is actually
omitted, that means the compiler is generating broken output).

> src/env/__init_tls.c:46:14: warning: function 'simple' is not needed and will not be emitted [-Wunneeded-internal-declaration]
> static void *simple(void *p)
>              ^
> 1 warning generated.

Thanks! This is a great find, cruft that was left behind in the lazy
thread pointer init removal. Fixing it shaved ~40 bytes off the
minimal static-linked program size, bringing the net change from the
change down to near-zero if I'm not mistaken. :-) Our anti-bloat
extremists will be very happy.

> src/env/__libc_start_main.c:9:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
> static void dummy() {}
>             ^
> 1 warning generated.

Another false positive.

> In file included from src/errno/strerror.c:7:
> src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
> 1133,
> ^~~~
> 1 warning generated.

Again, I'm confused why we're getting this one.

> src/regex/regcomp.c:3123:18: warning: explicitly assigning a variable of type 'reg_errcode_t' (aka 'int') to itself [-Wself-assign]
>     do { errcode = errcode; if ( 1) goto error_exit; } while ( 0);
>          ~~~~~~~ ^ ~~~~~~~

This is gratuitous and comes from a macro expansion.

The rest are more duplicates of the weak alias false positive (unused
static functions).

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05  1:54     ` Rich Felker
@ 2014-04-05  9:04       ` Jens Gustedt
  2014-04-05  9:31         ` Szabolcs Nagy
  2014-04-05 13:07         ` Rich Felker
  2014-04-07 11:17       ` Oliver Schneider
  1 sibling, 2 replies; 16+ messages in thread
From: Jens Gustedt @ 2014-04-05  9:04 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 2040 bytes --]

Hello

Am Freitag, den 04.04.2014, 21:54 -0400 schrieb Rich Felker:
> On Sat, Apr 05, 2014 at 03:06:03AM +0200, Abdoulaye Walsimou Gaye wrote:
> > In file included from src/errno/strerror.c:7:
> > src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
> > 1133,
> > ^~~~
> > 1 warning generated.
> 
> Again, I'm confused why we're getting this one.

This seems to come from the bogus handling of EDQUOT by mips:

	/* mips has one error code outside of the 8-bit range due to a
	 * historical typo, so we just remap it. */

This remapping seems only to have been done correctly for the strerror
function itself but not for the array declaration.

An equivalent patch for that line would be

#define E(a,b) (unsigned char)((EDQUOT==1133 && (a)==EDQUOT) ? 109 : a),

but which makes it only apparent how bogus this is.

In the function

if (EDQUOT==1133) {..}

is basically and equivalent of

#if MIPS

or so but without saying it. (I thought that musl didn't wanted these
architecture dependent use of #if/#else).

To "repair" the mips problem I would just do

I think the real bug is here

#define E(a,b) ((unsigned char)a),

this is a typical case of someone using a cast to burry a
problem, black magic, "casting a spell".

As this bug shows, the whole technique of searching the error string
in strerror is somehow fragile.

The whole thing could be avoided by using designated initializers and
eliminating the whole errid array right away. Designated initializers
should be present in all decent versions of gcc. Do you want me to
prepare a patch?

Jens


-- 
:: INRIA Nancy Grand Est :: http://www.loria.fr/~gustedt/   ::
:: AlGorille ::::::::::::::: office Nancy : +33 383593090   ::
:: ICube :::::::::::::: office Strasbourg : +33 368854536   ::
:: ::::::::::::::::::::::::::: gsm France : +33 651400183   ::
:: :::::::::::::::::::: gsm international : +49 15737185122 ::






[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05  9:04       ` Jens Gustedt
@ 2014-04-05  9:31         ` Szabolcs Nagy
  2014-04-05 13:07         ` Rich Felker
  1 sibling, 0 replies; 16+ messages in thread
From: Szabolcs Nagy @ 2014-04-05  9:31 UTC (permalink / raw)
  To: musl

* Jens Gustedt <jens.gustedt@inria.fr> [2014-04-05 11:04:58 +0200]:
> This seems to come from the bogus handling of EDQUOT by mips:
> 
> 	/* mips has one error code outside of the 8-bit range due to a
> 	 * historical typo, so we just remap it. */
> 
> This remapping seems only to have been done correctly for the strerror
> function itself but not for the array declaration.
> 
> An equivalent patch for that line would be
> 
> #define E(a,b) (unsigned char)((EDQUOT==1133 && (a)==EDQUOT) ? 109 : a),
> 
> but which makes it only apparent how bogus this is.

the cast should be fine

1133%256 == 109

and 109 is an unused errno number on mips

(this is why the mips bug can be worked around and yes it's ugly
but at least it does not penalize other archs)

> To "repair" the mips problem I would just do
> 
> I think the real bug is here
> 
> #define E(a,b) ((unsigned char)a),
> 
> this is a typical case of someone using a cast to burry a
> problem, black magic, "casting a spell".

you forgot to write what would you do :)

the cast hides a compiler warning about the >UCHAR_MAX errno

(making the warning visible makes sense, however i highly doubt
there ever will be another broken errno)

> As this bug shows, the whole technique of searching the error string
> in strerror is somehow fragile.
> 
> The whole thing could be avoided by using designated initializers and
> eliminating the whole errid array right away. Designated initializers
> should be present in all decent versions of gcc. Do you want me to
> prepare a patch?

how?

strerror is size optimized

(there are various ways to do strerror, but i could not improve
on rich's code)


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05  9:04       ` Jens Gustedt
  2014-04-05  9:31         ` Szabolcs Nagy
@ 2014-04-05 13:07         ` Rich Felker
  2014-04-05 14:37           ` Jens Gustedt
  1 sibling, 1 reply; 16+ messages in thread
From: Rich Felker @ 2014-04-05 13:07 UTC (permalink / raw)
  To: musl

On Sat, Apr 05, 2014 at 11:04:58AM +0200, Jens Gustedt wrote:
> Hello
> 
> Am Freitag, den 04.04.2014, 21:54 -0400 schrieb Rich Felker:
> > On Sat, Apr 05, 2014 at 03:06:03AM +0200, Abdoulaye Walsimou Gaye wrote:
> > > In file included from src/errno/strerror.c:7:
> > > src/errno/__strerror.h:100:1: warning: implicit conversion from 'int' to 'unsigned char' changes value from 1133 to 109 [-Wconstant-conversion]
> > > 1133,
> > > ^~~~
> > > 1 warning generated.
> > 
> > Again, I'm confused why we're getting this one.
> 
> This seems to come from the bogus handling of EDQUOT by mips:
> [...]
> I think the real bug is here
> 
> #define E(a,b) ((unsigned char)a),
> 
> this is a typical case of someone using a cast to burry a
> problem, black magic, "casting a spell".

The problem was fixed, not burried. In any case, the clang warning is
a bug in clang because it's claiming there's an implicit conversion
when the conversion is actually explicit.

> As this bug shows, the whole technique of searching the error string
> in strerror is somehow fragile.
> 
> The whole thing could be avoided by using designated initializers and
> eliminating the whole errid array right away. Designated initializers
> should be present in all decent versions of gcc. Do you want me to
> prepare a patch?

No, this is not about avoiding features but rather not adding a whole
page (or two pages, on 64-bit machines) of non-sharable pseudo-data to
libc.so, or the same amount of text to nearly every static-linked
program.

Please see the previous bikeshed discussion from when the mips issue
was fixed. Several people offered up crazy ideas for strerror and none
of them could compare in size to the current implementation; most of
them also broke its other nice qualities.

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05 13:07         ` Rich Felker
@ 2014-04-05 14:37           ` Jens Gustedt
  2014-04-05 16:35             ` Rich Felker
  0 siblings, 1 reply; 16+ messages in thread
From: Jens Gustedt @ 2014-04-05 14:37 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 1700 bytes --]

Am Samstag, den 05.04.2014, 09:07 -0400 schrieb Rich Felker:
> On Sat, Apr 05, 2014 at 11:04:58AM +0200, Jens Gustedt wrote:
> > The whole thing could be avoided by using designated initializers and
> > eliminating the whole errid array right away. Designated initializers
> > should be present in all decent versions of gcc. Do you want me to
> > prepare a patch?
> 
> No, this is not about avoiding features but rather not adding a whole
> page (or two pages, on 64-bit machines) of non-sharable pseudo-data to
> libc.so, or the same amount of text to nearly every static-linked
> program.

I experimented a bit, and I get

 - +20 bytes more for the simplest version, replacing the positon
   array by an array with sizes of the strings and a good reduction in
   complexity of the function

 - +40 to +60 bytes extra code size for some trivial error and bounds
   checking (which only can do good, here)

 - +100 bytes when replacing the "unsigned char" array with the sizes
   by an "unsigned short" array that holds all the offsets of the
   strings and reduces the function itself mainly to a table lookup.

(all that on x86_64 and only compile tested for them moment)

So this is largely below the one page threshold (increasing code size
from 3200 byte to 3360 at the worst), and the generated assembler
looks quite clean.

Jens

-- 
:: INRIA Nancy Grand Est :: http://www.loria.fr/~gustedt/   ::
:: AlGorille ::::::::::::::: office Nancy : +33 383593090   ::
:: ICube :::::::::::::: office Strasbourg : +33 368854536   ::
:: ::::::::::::::::::::::::::: gsm France : +33 651400183   ::
:: :::::::::::::::::::: gsm international : +49 15737185122 ::



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05 14:37           ` Jens Gustedt
@ 2014-04-05 16:35             ` Rich Felker
  2014-04-05 22:08               ` Jens Gustedt
  0 siblings, 1 reply; 16+ messages in thread
From: Rich Felker @ 2014-04-05 16:35 UTC (permalink / raw)
  To: musl

On Sat, Apr 05, 2014 at 04:37:49PM +0200, Jens Gustedt wrote:
> Am Samstag, den 05.04.2014, 09:07 -0400 schrieb Rich Felker:
> > On Sat, Apr 05, 2014 at 11:04:58AM +0200, Jens Gustedt wrote:
> > > The whole thing could be avoided by using designated initializers and
> > > eliminating the whole errid array right away. Designated initializers
> > > should be present in all decent versions of gcc. Do you want me to
> > > prepare a patch?
> > 
> > No, this is not about avoiding features but rather not adding a whole
> > page (or two pages, on 64-bit machines) of non-sharable pseudo-data to
> > libc.so, or the same amount of text to nearly every static-linked
> > program.
> 
> I experimented a bit, and I get
> 
>  - +20 bytes more for the simplest version, replacing the positon
>    array by an array with sizes of the strings and a good reduction in
>    complexity of the function
> 
>  - +40 to +60 bytes extra code size for some trivial error and bounds
>    checking (which only can do good, here)

The current code already has full bounds/error checking. Any value
except a valid error code will result in "No error information".

>  - +100 bytes when replacing the "unsigned char" array with the sizes
>    by an "unsigned short" array that holds all the offsets of the
>    strings and reduces the function itself mainly to a table lookup.
> 
> (all that on x86_64 and only compile tested for them moment)

I'd be interested in seeing what you mean by some of these, but note
that these are all +'s and don't seem to have any concrete advantages
over the current code.

> So this is largely below the one page threshold (increasing code size
> from 3200 byte to 3360 at the worst), and the generated assembler
> looks quite clean.

I was talking about the approach with designated initializers, which I
assumed would look something like:

{
	[EBADF] = "Bad file descriptor",
	[EILSEQ] = "Illegal sequence",
	...
}

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05 16:35             ` Rich Felker
@ 2014-04-05 22:08               ` Jens Gustedt
  2014-04-06  1:57                 ` Rich Felker
  0 siblings, 1 reply; 16+ messages in thread
From: Jens Gustedt @ 2014-04-05 22:08 UTC (permalink / raw)
  To: musl


[-- Attachment #1.1: Type: text/plain, Size: 1387 bytes --]

Am Samstag, den 05.04.2014, 12:35 -0400 schrieb Rich Felker:
> I'd be interested in seeing what you mean by some of these, but note
> that these are all +'s and don't seem to have any concrete advantages
> over the current code.

I attach the cleanest and simplest version. (forget about the handling
of the historic mips case, if you don't like it)

> I was talking about the approach with designated initializers, which I
> assumed would look something like:
> 
> {
> 	[EBADF] = "Bad file descriptor",
> 	[EILSEQ] = "Illegal sequence",
> 	...
> }

sorry I wasn't clear enough, yes the one you had in mind would need an
array of pointers, instead of "unsigned char".

I was thinking of using designated initializers to compute offsets. In
the example that is joint, the main change in size is due to the
change from "unsigned char" to "unsigned short" for the table and
because there are some holes. (+200)

When placing the default entry in front instead of last, this shaves
of about 50, again. (so +150 in total)

Jens


-- 
:: INRIA Nancy Grand Est :: http://www.loria.fr/~gustedt/   ::
:: AlGorille ::::::::::::::: office Nancy : +33 383593090   ::
:: ICube :::::::::::::: office Strasbourg : +33 368854536   ::
:: ::::::::::::::::::::::::::: gsm France : +33 651400183   ::
:: :::::::::::::::::::: gsm international : +49 15737185122 ::




[-- Attachment #1.2: strerror.c --]
[-- Type: text/x-csrc, Size: 1242 bytes --]

#include <errno.h>
#include <string.h>
#include <stddef.h>

/* mips has one error code outside of the 8-bit range due to a
 * historical typo, so we just remap it. */
#define MIPSACCIDENT 1133

#if EDQUOT==MIPSACCIDENT
# define MIPSSPECIAL (MIPSACCIDENT&0xFF)
# undef EDQUOT
# define EDQUOT MIPSSPECIAL
#else
# define MIPSSPECIAL 0
#endif


#define E(a,b) char _err ## a[sizeof b];
struct errstruct {
#include "__strerror.h"
};

#undef E
#define E(a,b) ._err ## a = { b },
static const struct errstruct errmsg = {
#include "__strerror.h"
};

#undef E
#define E(a,b) [a] = offsetof(struct errstruct, _err ## a),
static const unsigned short erroffset[] = {
#include "__strerror.h"
};

enum { errmax = (sizeof erroffset)/(sizeof erroffset[0]), };

char *strerror(int e)
{
        if (MIPSSPECIAL) {
          switch (e) {
            /* would be simpler if _err0 would be first field */
          case MIPSSPECIAL: return (char*)errmsg._err0;
          case MIPSACCIDENT: e=MIPSSPECIAL; break;
          }
        }
        /* would be simpler if _err0 would be first field */
        if (((unsigned)e >= (unsigned)errmax) || !erroffset[e]) e = 0;
        return erroffset[e] + (char*)&errmsg;
}

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05 22:08               ` Jens Gustedt
@ 2014-04-06  1:57                 ` Rich Felker
  2014-04-06 16:37                   ` Jens Gustedt
  0 siblings, 1 reply; 16+ messages in thread
From: Rich Felker @ 2014-04-06  1:57 UTC (permalink / raw)
  To: musl

On Sun, Apr 06, 2014 at 12:08:23AM +0200, Jens Gustedt wrote:
> Am Samstag, den 05.04.2014, 12:35 -0400 schrieb Rich Felker:
> > I'd be interested in seeing what you mean by some of these, but note
> > that these are all +'s and don't seem to have any concrete advantages
> > over the current code.
> 
> I attach the cleanest and simplest version. (forget about the handling
> of the historic mips case, if you don't like it)

As usual you're the master of preprocessor tricks. Overall I like it,
but it's still not as efficient as what we have now.

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-06  1:57                 ` Rich Felker
@ 2014-04-06 16:37                   ` Jens Gustedt
  2014-04-06 16:49                     ` Rich Felker
  0 siblings, 1 reply; 16+ messages in thread
From: Jens Gustedt @ 2014-04-06 16:37 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 676 bytes --]

Am Samstag, den 05.04.2014, 21:57 -0400 schrieb Rich Felker:
> As usual you're the master of preprocessor tricks. Overall I like it,
> but it's still not as efficient as what we have now.

If space efficiency is really as important, you could be thinking of
compressing all that strings, there is a lot of redundancy in the
text.

Jens

-- 
:: INRIA Nancy Grand Est :: http://www.loria.fr/~gustedt/   ::
:: AlGorille ::::::::::::::: office Nancy : +33 383593090   ::
:: ICube :::::::::::::: office Strasbourg : +33 368854536   ::
:: ::::::::::::::::::::::::::: gsm France : +33 651400183   ::
:: :::::::::::::::::::: gsm international : +49 15737185122 ::



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-06 16:37                   ` Jens Gustedt
@ 2014-04-06 16:49                     ` Rich Felker
  0 siblings, 0 replies; 16+ messages in thread
From: Rich Felker @ 2014-04-06 16:49 UTC (permalink / raw)
  To: musl

On Sun, Apr 06, 2014 at 06:37:19PM +0200, Jens Gustedt wrote:
> Am Samstag, den 05.04.2014, 21:57 -0400 schrieb Rich Felker:
> > As usual you're the master of preprocessor tricks. Overall I like it,
> > but it's still not as efficient as what we have now.
> 
> If space efficiency is really as important, you could be thinking of
> compressing all that strings, there is a lot of redundancy in the
> text.

*sigh* This was all discussed in the last bikeshed.

Compressing it just moves all the size from shared text to non-shared
data, not to mention adding the code size of a decompressor. And you
can't just decompress one string at a time in a small buffer because
the contract of musl's strerror is that the returned string is
immutable/permanently valid. This is necessary to make implementing
printf, strerror_r, etc. in terms of strerror possible, which in turn
is needed to make them efficient (otherwise you need a horrible retry
loop dynamically allocating larger buffer space, etc.)

The question is not whether space efficiency is really important, but
whether there's a justification for enlarging a function when the
increase in size has no practical benefits. And I think a majority of
our users would say the answer is no.

I agree that your version is mildly more elegant, and if I'd thought
of it first that's probably what I would have used from the beginning,
but I can't see explaining to users a size increase for the sake of
mild elegance.

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-05  1:54     ` Rich Felker
  2014-04-05  9:04       ` Jens Gustedt
@ 2014-04-07 11:17       ` Oliver Schneider
  2014-04-07 17:23         ` Rich Felker
  1 sibling, 1 reply; 16+ messages in thread
From: Oliver Schneider @ 2014-04-07 11:17 UTC (permalink / raw)
  To: musl

On 2014-04-05 01:54, Rich Felker wrote:
>> src/env/__init_security.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
>> static void dummy(void *ent)
>>             ^
>> 1 warning generated.
> 
> This is a bug in the compiler; the function dummy has an externally
> visible alias, so it will not be omitted (and if it is actually
> omitted, that means the compiler is generating broken output).
There is yet another possibility ;)

The ccc-analyzer could simply be buggy in this case. Would be
interesting to look at the optimized intermediate code whether this gets
optimized out. I think it probably doesn't, but who knows.

The dangling else warnings could also be resolved by simply adding
braces. It doesn't add to the code size, and the times when developers
where paid by LoC are long over (I hope).

// Oliver


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-07 11:17       ` Oliver Schneider
@ 2014-04-07 17:23         ` Rich Felker
  2014-04-07 19:40           ` Abdoulaye Walsimou Gaye
  0 siblings, 1 reply; 16+ messages in thread
From: Rich Felker @ 2014-04-07 17:23 UTC (permalink / raw)
  To: musl

On Mon, Apr 07, 2014 at 11:17:55AM +0000, Oliver Schneider wrote:
> On 2014-04-05 01:54, Rich Felker wrote:
> >> src/env/__init_security.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
> >> static void dummy(void *ent)
> >>             ^
> >> 1 warning generated.
> > 
> > This is a bug in the compiler; the function dummy has an externally
> > visible alias, so it will not be omitted (and if it is actually
> > omitted, that means the compiler is generating broken output).
> There is yet another possibility ;)
> 
> The ccc-analyzer could simply be buggy in this case. Would be
> interesting to look at the optimized intermediate code whether this gets
> optimized out. I think it probably doesn't, but who knows.

At one point it was getting optimized out, which made it impossible to
build musl with clang, so I think this was fixed and it's just a
residual bug in the warning generation.

> The dangling else warnings could also be resolved by simply adding
> braces. It doesn't add to the code size, and the times when developers
> where paid by LoC are long over (I hope).

Our developers are paid by 1/LoC. ;-)

Rich


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: build with clang-3.4 warnings report
  2014-04-07 17:23         ` Rich Felker
@ 2014-04-07 19:40           ` Abdoulaye Walsimou Gaye
  0 siblings, 0 replies; 16+ messages in thread
From: Abdoulaye Walsimou Gaye @ 2014-04-07 19:40 UTC (permalink / raw)
  To: musl

On 04/07/2014 07:23 PM, Rich Felker wrote:
> On Mon, Apr 07, 2014 at 11:17:55AM +0000, Oliver Schneider wrote:
>> On 2014-04-05 01:54, Rich Felker wrote:
>>>> src/env/__init_security.c:8:13: warning: function 'dummy' is not needed and will not be emitted [-Wunneeded-internal-declaration]
>>>> static void dummy(void *ent)
>>>>              ^
>>>> 1 warning generated.
>>> This is a bug in the compiler; the function dummy has an externally
>>> visible alias, so it will not be omitted (and if it is actually
>>> omitted, that means the compiler is generating broken output).
>> There is yet another possibility ;)
>>
>> The ccc-analyzer could simply be buggy in this case. Would be
>> interesting to look at the optimized intermediate code whether this gets
>> optimized out. I think it probably doesn't, but who knows.
> At one point it was getting optimized out, which made it impossible to
> build musl with clang, so I think this was fixed and it's just a
> residual bug in the warning generation.
>
>> The dangling else warnings could also be resolved by simply adding
>> braces. It doesn't add to the code size, and the times when developers
>> where paid by LoC are long over (I hope).
>

Hello,
I can confirm that these functions are not optimized out by clang, here is __init_security.o example

     16: 00000000     4 FUNC    LOCAL  DEFAULT    1 dummy
     17: 00000000    24 OBJECT  LOCAL  DEFAULT   22 .L__init_security.pfd
     18: 00000000    10 OBJECT  LOCAL  DEFAULT   23 .L.str
     19: 00000000     0 SECTION LOCAL  DEFAULT   22
     20: 00000000     0 NOTYPE  LOCAL  DEFAULT   22 $d
     21: 00000000     0 SECTION LOCAL  DEFAULT   23
     22: 00000000     0 SECTION LOCAL  DEFAULT   24
     23: 00000000     0 SECTION LOCAL  DEFAULT   25
     24: 00000000     0 SECTION LOCAL  DEFAULT   26
     25: 00000004   208 FUNC    GLOBAL DEFAULT    1 __init_security
     26: 00000000     4 FUNC    WEAK   DEFAULT    1 __init_ssp
     27: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __syscall
     28: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __libc


- awg


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2014-04-07 19:40 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-04 19:59 build with clang-3.4 warnings report Abdoulaye Walsimou Gaye
2014-04-04 20:47 ` Rich Felker
2014-04-05  1:06   ` Abdoulaye Walsimou Gaye
2014-04-05  1:54     ` Rich Felker
2014-04-05  9:04       ` Jens Gustedt
2014-04-05  9:31         ` Szabolcs Nagy
2014-04-05 13:07         ` Rich Felker
2014-04-05 14:37           ` Jens Gustedt
2014-04-05 16:35             ` Rich Felker
2014-04-05 22:08               ` Jens Gustedt
2014-04-06  1:57                 ` Rich Felker
2014-04-06 16:37                   ` Jens Gustedt
2014-04-06 16:49                     ` Rich Felker
2014-04-07 11:17       ` Oliver Schneider
2014-04-07 17:23         ` Rich Felker
2014-04-07 19:40           ` Abdoulaye Walsimou Gaye

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).