From: jaruga@... Date: 2018-09-19T16:32:31+00:00 Subject: [ruby-core:89083] [Ruby trunk Misc#15136] Fix -Wparentheses warnings Issue #15136 has been updated by jaruga (Jun Aruga). File make.log added > You say "I fixed the warnings". So why is this issue still open. Sorry it's mistake. Correctly I fixed the warnings on my git repository, and sent pull-request. And not merged in the main repository's trunk. The patch is here. https://github.com/ruby/ruby/pull/1958 or https://github.com/ruby/ruby/pull/1958.patch On the condition for the current trunk branch + below modification. ``` diff --git a/configure.ac b/configure.ac index 14fe5279c7..6182a5d792 100644 --- a/configure.ac +++ b/configure.ac @@ -458,7 +458,7 @@ AS_IF([test "$GCC:${warnflags+set}:no" = yes::no], [ AS_IF([test $icc_version -gt 0], [ particular_werror_flags=no ]) - for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \ + for wflag in -Wno-unused-parameter -Wno-long-long \ -diag-disable=175,188,2259 \ -Wno-missing-field-initializers \ -Wno-tautological-compare \ ``` ``` $ autoconf $ ./configure $ make >& make.log $ grep -r Wparentheses make.log | wc -l 18 ``` I would attach the `make.log` now. There 2 cases in the warnings. 1. Yes, as you said, that's about assignment. ``` mjit_worker.c:1097:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses] if (success = compile_c_to_o(c_file, o_file)) { ^~~~~~~ ``` 2. 2nd case is ``` signal.c:889:24: warning: suggest parentheses around ���&&��� within ���||��� [-Wparentheses] sp_page <= fault_page && fault_page <= bp_page) { ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ ``` ---------------------------------------- Misc #15136: Fix -Wparentheses warnings https://bugs.ruby-lang.org/issues/15136#change-74100 * Author: jaruga (Jun Aruga) * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Currently the `-Wno-parentheses` was set. I assumed if we could fix the warning, we could remove the `-Wno-parentheses`. I fixed the warnings, because the warning is used as a default on Fedora Project build environment. I sent pull-request. https://github.com/ruby/ruby/pull/1958 I would show you the explanation of `-Wparentheses`. ``` $ man gcc (or gcc --help --verbose) ... -Wparentheses Warn if parentheses are omitted in certain contexts, such as when there is an assignment in a context where a truth value is expected, or when operators are nested whose precedence people often get confused about. Also warn if a comparison like "x<=y<=z" appears; this is equivalent to "(x<=y ? 1 : 0) <= z", which is a different interpretation from that of ordinary mathematical notation. Also warn for dangerous uses of the GNU extension to "?:" with omitted middle operand. When the condition in the "?": operator is a boolean expression, the omitted value is always 1. Often programmers expect it to be a value computed inside the conditional expression instead. For C++ this also warns for some cases of unnecessary parentheses in declarations, which can indicate an attempt at a function call instead of a declaration: { // Declares a local variable called mymutex. std::unique_lock (mymutex); // User meant std::unique_lock lock (mymutex); } This warning is enabled by -Wall. ... ``` ---Files-------------------------------- make.log (96.1 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: