From: SourceForge.net <no...@so...> - 2012-11-24 02:23:20
|
Bugs item #3589499, was opened at 2012-11-23 18:23 Message generated for change (Tracker Item Submitted) made by swsnyder24 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=461322&aid=3589499&group_id=50884 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: libevent-core Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Steve Snyder (swsnyder24) Assigned to: Nobody/Anonymous (nobody) Summary: GCC complains of strict-aliasing breakage Initial Comment: At the standard -O2 optimization GCC v4.4.6 complains of broken strict-aliasing (see below) when building libevent v2.0.21 on a CentOS5 / i686 system. The warnings can be silenced by compiling with switch -fno-strict-aliasing, but at the cost of disabling this optimization for the entire libevent code base. That seems pretty extreme just for a couple instances of complaint. Best case would be to fix the code being complained about. Second-best case would be to apply the -fno-strict-aliasing switch to the compilation of the only 2 source files being complained about. This is the source of the complaints: common declaration: struct sockaddr_storage ss; evdns.c: if (evutil_parse_sockaddr_port(addr, (struct sockaddr*)&ss, &socklen)<0) regress_testutils.c: if (getsockname(fd, (struct sockaddr*)&ss, &socklen) != 0) Basically, GCC doesn't like passing a pointer to 1 struct as a pointer of a different struct. ----------------------- libtool: compile: gcc44 -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=native -mno-avx -fomit-frame-pointer -fPIC -MT evdns.lo -MD -MP -MF .deps/evdns.Tpo -c evdns.c -o evdns.o evdns.c: In function 'evdns_base_parse_hosts_line': evdns.c:2567: warning: dereferencing pointer 'ss.461' does break strict-aliasing rules evdns.c:2565: warning: dereferencing pointer 'ss.461' does break strict-aliasing rules evdns.c:4037: note: initialized from here evdns.c:2566: warning: dereferencing pointer 'sa.301' does break strict-aliasing rules evdns.c:2566: note: initialized from here evdns.c:2568: warning: dereferencing pointer 'sa.302' does break strict-aliasing rules evdns.c:2568: note: initialized from here evdns.c: In function 'evdns_base_nameserver_ip_add': evdns.c:2557: warning: dereferencing pointer 'sa' does break strict-aliasing rules evdns.c:2555: warning: dereferencing pointer 'sa' does break strict-aliasing rules evdns.c:2567: warning: dereferencing pointer 'sa' does break strict-aliasing rules evdns.c:2565: warning: dereferencing pointer 'sa' does break strict-aliasing rules evdns.c:2587: note: initialized from here evdns.c:2566: warning: dereferencing pointer 'sa.301' does break strict-aliasing rules evdns.c:2566: note: initialized from here evdns.c:2568: warning: dereferencing pointer 'sa.302' does break strict-aliasing rules evdns.c:2568: note: initialized from here evdns.c:2556: warning: dereferencing pointer 'sa.299' does break strict-aliasing rules evdns.c:2556: note: initialized from here evdns.c:2558: warning: dereferencing pointer 'sa.300' does break strict-aliasing rules evdns.c:2558: note: initialized from here gcc44 -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=native -mno-avx -fomit-frame-pointer -fPIC -MT regress-regress_testutils.o -MD -MP -MF .deps/regress-regress_testutils.Tpo -c -o regress-regress_testutils.o `test -f 'regress_testutils.c' || echo './'`regress_testutils.c regress_testutils.c: In function 'regress_get_socket_port': regress_testutils.c:86: warning: dereferencing pointer 'ss.22' does break strict-aliasing rules regress_testutils.c:86: note: initialized from here regress_testutils.c:88: warning: dereferencing pointer 'ss.23' does break strict-aliasing rules regress_testutils.c:88: note: initialized from here gcc44 -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=native -mno-avx -fomit-frame-pointer -fPIC -MT regress-regress_listener.o -MD -MP -MF .deps/regress-regress_listener.Tpo -c -o regress-regress_listener.o `test -f 'regress_listener.c' || echo './'`regress_listener.c regress_listener.c: In function 'regress_pick_a_port': regress_listener.c:112: warning: dereferencing pointer 'sin1' does break strict-aliasing rules regress_listener.c:110: warning: dereferencing pointer 'sin1' does break strict-aliasing rules regress_listener.c:108: note: initialized from here regress_listener.c:112: warning: dereferencing pointer 'sin2' does break strict-aliasing rules regress_listener.c:111: warning: dereferencing pointer 'sin2' does break strict-aliasing rules regress_listener.c:109: note: initialized from here ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=461322&aid=3589499&group_id=50884 |