[gnu.gcc] extra extra warning #2

paul@UUNET.UU.NET (Paul Hudson) (12/06/88)

The following diffs cause gcc to give a warning if an expression statement
has no effect. This catches (among others) the reverse finger trouble to
my previous change, typing == where I meant =.

It only objects if the whole expression has no side-effect - it might
be argued that 

f() + 1;

should be pointed out. I have a feeling that this would happen too often
as a result of macros returing a value which is ignored, but where the whole
expression has a side-effect. It could be added to expand_expr

if (ignore && !TREE_VOLATILE(exp) && extra_warnings)
	warning("....");

should do it.



Paul Hudson 

Snail mail: Monotype ADG	Email:	...!ukc!acorn!moncam!paul
	    Science Park,		paul@moncam.co.uk
	    Milton Road,	"Sun Microsysytems:
	    Cambridge,		 The Company is Arrogant (TM)"
	    CB4 4FQ


*** stmt.c.orig	Mon Dec  5 18:16:09 1988
--- stmt.c	Mon Dec  5 18:17:38 1988
***************
*** 758,763 ****
--- 758,765 ----
  expand_expr_stmt (exp)
       tree exp;
  {
+   if (expr_stmts_for_value == 0 && !TREE_VOLATILE(exp) && extra_warnings)
+     warning("statement with no effect");
    last_expr_type = TREE_TYPE (exp);
    last_expr_value = expand_expr (exp, expr_stmts_for_value ? 0 : const0_rtx,
  				 VOIDmode, 0);