The following (legitimate) code will generate a warning when both -O2 and -Wconversion is enabled but not when only -Wconversion is enabled. Code: #include <arpa/inet.h> // Nonsense code to illustrate problem int main(void) { uint16_t portnbr=0; uint16_t n_portnbr = htons(portnbr); exit(0); } With optimization $> gcc -std=gnu99 -Wconversion -Werror -O2 -c tsthtons.c cc1: warnings being treated as errors tsthtons.c: In function ‘main’: tsthtons.c:6: error: conversion to ‘short unsigned int’ from ‘int’ may alter its value and without $>gcc -std=gnu99 -Wconversion -Werror -c tsthtons.c $> in both cases gcc --version gcc (SUSE Linux) 4.4.1 [gcc-4_4-branch revision 150839] Copyright (C) 2009 Free Software Foundation, Inc. and gnu clib v2.10.1
Changed in git.
Shouldn’t the same change (http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=69da074d7adfab7b57004a0dea9403a928e310a5) be applied to sysdeps/s390/bits/byteswap.h and the generic bits/byteswap.h?
thanks, patch send: http://sourceware.org/ml/libc-alpha/2012-06/msg00550.html
Fixed for glibc 2.16 now with: commit 2174c6dd8555f654c30df2f8f3321b69e0f736f8 Author: Andreas Jaeger <aj@suse.de> Date: Thu Jun 21 15:49:33 2012 +0200 Avoid -Wconversion warning for htons