public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: suggested addition to -Wparentheses: warn about ` ! x & 1 '
@ 1997-08-28 20:03 Jim Meyering
  1997-08-28 20:03 ` egcs release Jim Wilson
  0 siblings, 1 reply; 6+ messages in thread
From: Jim Meyering @ 1997-08-28 20:03 UTC (permalink / raw)
  To: egcs

Joern Rennecke <amylaar@cygnus.co.uk> writes:
| > I was a little surprised to see that gcc -Wparentheses doesn't
| > warn about this mix of `!' and `&':
| >
| >   int foo (int x) { return ! x&1; }
| >
| > Can anyone think of a reason not to add this functionality?
|
| Yes.  It's easy to remember that the unary operators have a high
| priority.  There are some useful constructs that would be warned about,
| and adding superflous parantheses often makes the code harder to read.

But first you have to know that.
Some people don't.

Would you give an example or two of such useful constructs?

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

* Re: egcs release
  1997-08-28 20:03 suggested addition to -Wparentheses: warn about ` ! x & 1 ' Jim Meyering
@ 1997-08-28 20:03 ` Jim Wilson
  0 siblings, 0 replies; 6+ messages in thread
From: Jim Wilson @ 1997-08-28 20:03 UTC (permalink / raw)
  To: egcs

	Thanks. I can use egcs compile glibc now. It passed "make check".
	BTW, how about the long long bug in cpp? I have a patch for it.

I have lots of bug reports and patches from you.  It would be helpful if
you could prioritize them, so I know which ones to work on first.

Jim

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

* Re: suggested addition to -Wparentheses: warn about ` ! x & 1 '
  1997-08-29 18:12 A vtable thunks bug Ulrich Drepper
@ 1997-08-29 19:14 ` Michael R Cook
  0 siblings, 0 replies; 6+ messages in thread
From: Michael R Cook @ 1997-08-29 19:14 UTC (permalink / raw)
  To: egcs

>>>>> "PS" == Peter Seebach  writes:

 >> Hmm, maybe you could make an option -Wall-parentheses, which warns if
 >> any construct is ambigous if operator precedence is not taken into account.
 >> That would cover this case, and all the related ones...

 PS> Yeah, but I don't want warnings on
 PS> 	2 * 3 + 5;

Ideally, all warnings would be very specific, and would be given a
unique identifier, and we'd be able to enable and disable them
individually.  Even better would be if we could enable/disable them
on a sub-file basis; for example:

  __warning(+4701); /* Enable the "Misaligned frobnicator" warning */
  x = 2 * 3 + 5;
  __warning(-4701); /* Disable */

or

  x = __warning(+4701, 2 * 3 + 5);
    /* Evaluate the expression `e' with warning 4701 enabled. */

For macros and headers, we'd want to be able to maintain a kind of
stack for enabling and disabling warnings.  For example, if a
warning is disabled N times, it would have to be enabled N times
before it really became enabled.  Perhaps something like:
__warning(++4701) and __warning(--4701).

Warning identifiers could be assigned so that similar warnings were
consecutive, so you could maybe enable and disable sets of similar
warnings all at once:

 __warning(+3201..3299) /* gimme all of the parentheses warnings */

This functionality would subsume probably all of the existing -W
options.

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

* Re: suggested addition to -Wparentheses: warn about ` ! x & 1 '
@ 1997-08-28 23:41 Peter Seebach
  0 siblings, 0 replies; 6+ messages in thread
From: Peter Seebach @ 1997-08-28 23:41 UTC (permalink / raw)
  To: egcs

>> | > I was a little surprised to see that gcc -Wparentheses doesn't
>> | > warn about this mix of `!' and `&':
>> | >
>> | >   int foo (int x) { return ! x&1; }
>> | >
>> | > Can anyone think of a reason not to add this functionality?

>Hmm, maybe you could make an option -Wall-parentheses, which warns if
>any construct is ambigous if operator precedence is not taken into account.
>That would cover this case, and all the related ones...

Yeah, but I don't want warnings on
	2 * 3 + 5;

>> Would you give an example or two of such useful constructs?

>!x & y , where y is a variable.

That could be spelled as
	y & !x;

unambiguously.  (And, IMHO, more idiomatically, as I always try to leave
the thing masked on the left, and the mask on the right.)

>!x & (y) , where y is a macro argument that may or may not be constant...

I'd probably do that as
	(!x) & (y)

I will admit to occasionally being bitten by things like the '!x & y', just
because I do enough sh to think of '!' as working on everything in sight.

-s

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

* Re: suggested addition to -Wparentheses: warn about ` ! x & 1 '
@ 1997-08-28 19:37 Joern Rennecke
  0 siblings, 0 replies; 6+ messages in thread
From: Joern Rennecke @ 1997-08-28 19:37 UTC (permalink / raw)
  To: egcs

> I was a little surprised to see that gcc -Wparentheses doesn't
> warn about this mix of `!' and `&':
> 
>   int foo (int x) { return ! x&1; }
> 
> Can anyone think of a reason not to add this functionality?

Yes.  It's easy to remember that the unary operators have a high
priority.  There are some useful constructs that would be warned about,
and adding superflous parantheses often makes the code harder to read.

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

* suggested addition to -Wparentheses: warn about ` ! x & 1 '
  1997-08-28 14:34 A libio patch H.J. Lu
@ 1997-08-28 15:38 ` Jim Meyering
  0 siblings, 0 replies; 6+ messages in thread
From: Jim Meyering @ 1997-08-28 15:38 UTC (permalink / raw)
  To: egcs

I think it would be worthwhile to add at least one more case in which
-Wparentheses gives a warning.  I just saw someone fix a bug that
such an addition would have highlighted.

I was a little surprised to see that gcc -Wparentheses doesn't
warn about this mix of `!' and `&':

  int foo (int x) { return ! x&1; }

Can anyone think of a reason not to add this functionality?

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

end of thread, other threads:[~1997-08-29 19:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-08-28 20:03 suggested addition to -Wparentheses: warn about ` ! x & 1 ' Jim Meyering
1997-08-28 20:03 ` egcs release Jim Wilson
  -- strict thread matches above, loose matches on Subject: below --
1997-08-29 18:12 A vtable thunks bug Ulrich Drepper
1997-08-29 19:14 ` suggested addition to -Wparentheses: warn about ` ! x & 1 ' Michael R Cook
1997-08-28 23:41 Peter Seebach
1997-08-28 19:37 Joern Rennecke
1997-08-28 14:34 A libio patch H.J. Lu
1997-08-28 15:38 ` suggested addition to -Wparentheses: warn about ` ! x & 1 ' Jim Meyering

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).