public inbox for glibc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug libc/17082] New: htons et al.: statement-expressions prevent use on global scope with -O1 and higher @ 2014-06-23 19:53 jh_sourceware.org at sotun dot de 2014-06-23 20:10 ` [Bug libc/17082] " joseph at codesourcery dot com ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: jh_sourceware.org at sotun dot de @ 2014-06-23 19:53 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=17082 Bug ID: 17082 Summary: htons et al.: statement-expressions prevent use on global scope with -O1 and higher Product: glibc Version: unspecified Status: NEW Severity: enhancement Priority: P2 Component: libc Assignee: unassigned at sourceware dot org Reporter: jh_sourceware.org at sotun dot de CC: drepper.fsp at gmail dot com htons() and many other libc functions are implemented using macros with statement-expressions when compiled with -O1 or higher. Statement-expressions are not supported on global scope in GCC, resulting in a compilation failure of code like > cat test.cpp #include <netinet/in.h> in_port_t p = htons(42); > g++ test.cpp -O1 test.cpp:2:15: error: statement-expressions are not allowed outside functions nor in template-argument lists This seems to be a design decision for a manual optimization; and against supporting the rare case of complex code on global scope. It may be time to reevaluate that decision: 1. Small functions can be reliably inlined, optimizing away instructions that otherwise would have been prevented using macros. 2. C++ lambda functions are on the rise. They allowing several nice patterns with global scope code (e.g. for data structure initialization). But statement-expressions do not work in lambdas defined on global scope. Their prevalence in glibc complicates said patterns and causes confusing error messages when moving code between function and global scope. Implementing user-visible libc functions as functions instead of macros solves this problem. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug libc/17082] htons et al.: statement-expressions prevent use on global scope with -O1 and higher 2014-06-23 19:53 [Bug libc/17082] New: htons et al.: statement-expressions prevent use on global scope with -O1 and higher jh_sourceware.org at sotun dot de @ 2014-06-23 20:10 ` joseph at codesourcery dot com 2014-06-24 7:40 ` fweimer at redhat dot com 2015-03-15 7:59 ` cemkalyoncu at gmail dot com 2 siblings, 0 replies; 4+ messages in thread From: joseph at codesourcery dot com @ 2014-06-23 20:10 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=17082 --- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Policy questions should best be taken to libc-alpha (by someone willing to take the lead in getting the discussion to consensus and then documenting the resulting consensus on the wiki, not just posting a one-off question and waiting for an answer to emerge) rather than filed as bugs; Bugzilla is best for something where the presence of a defect is unambiguous under existing policy. If such a consensus were in the direction you propose, any bugs filed should be separate bugs for each function or header involved so it is clear what is or is not fixed rather than needing to track some bugs as partly fixed. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug libc/17082] htons et al.: statement-expressions prevent use on global scope with -O1 and higher 2014-06-23 19:53 [Bug libc/17082] New: htons et al.: statement-expressions prevent use on global scope with -O1 and higher jh_sourceware.org at sotun dot de 2014-06-23 20:10 ` [Bug libc/17082] " joseph at codesourcery dot com @ 2014-06-24 7:40 ` fweimer at redhat dot com 2015-03-15 7:59 ` cemkalyoncu at gmail dot com 2 siblings, 0 replies; 4+ messages in thread From: fweimer at redhat dot com @ 2014-06-24 7:40 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=17082 Florian Weimer <fweimer at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Flags| |security- -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug libc/17082] htons et al.: statement-expressions prevent use on global scope with -O1 and higher 2014-06-23 19:53 [Bug libc/17082] New: htons et al.: statement-expressions prevent use on global scope with -O1 and higher jh_sourceware.org at sotun dot de 2014-06-23 20:10 ` [Bug libc/17082] " joseph at codesourcery dot com 2014-06-24 7:40 ` fweimer at redhat dot com @ 2015-03-15 7:59 ` cemkalyoncu at gmail dot com 2 siblings, 0 replies; 4+ messages in thread From: cemkalyoncu at gmail dot com @ 2015-03-15 7:59 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=17082 Cem Kalyoncu <cemkalyoncu at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cemkalyoncu at gmail dot com -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-03-15 7:59 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-06-23 19:53 [Bug libc/17082] New: htons et al.: statement-expressions prevent use on global scope with -O1 and higher jh_sourceware.org at sotun dot de 2014-06-23 20:10 ` [Bug libc/17082] " joseph at codesourcery dot com 2014-06-24 7:40 ` fweimer at redhat dot com 2015-03-15 7:59 ` cemkalyoncu at gmail dot com
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 read-only IMAP folder(s) and NNTP newsgroup(s).