New feature, warning on n=n++ etc.

Michael Meeks michael@imaginator.com
Tue Jun 16 13:28:00 GMT 1998


Hi,

	A first attempt, at a first submission to egcs. I have signed a
copyright assignment, posted it to RMS and recieved a reply confirming
this.

	The feature is to catch probably undefined syntax. The following
cases are flagged, where Fail denotes a warning.

  a = a++ ; /* Fail */
  a = --a ; /* Fail */
  a = ++a + b ; /* Fail */
  a = a-- + b ; /* Fail */
  a = (a++ && 4) ; /* shouldn't Fail but does */
  a[n]=b[n++] ; /* Fail */
  a[--n]=b[n] ; /* Fail */
  a[++n]=b[--n] ; /* Fail */
  c[n][n]=c[n][n]++ ; /* should fail but doesn't */
  c[n][p]=c[n][n++] ; /* Fail */ /* if [n][n] then fails twice */
  *ptr++ = (int)ptr++ ; /* Fail */
  ptr->a = ptr->a++ ; /* should fail but doesn't */
  ptr->a = (int)(ptr++) ; /* Fail */
  len = sprintf (ans, "%d", len++) ;    /* Fail */
  *ptr++ = fn(*ptr) ; /* should fail but doesn't */
  a = b = a++ ;   /* Fail */
  b = a = --b ;   /* Fail */
  a = 1 + (a=1) ; /* Fail */
  a = (a=b) ;     /* Fail */
  a = (a=b) + 1 ; /* Fail */

	A changelog entry might look like : ?

Tue Jun 16 19:41:18 1998  Michael Meeks  (michael@imaginator.com)

	* c-toplev.c: Added -Wundefined to lang_options.
	* c-decl.c (c_decode_option): Added -Wundefined, added warn_undefined
	to -Wall.
	* c-iterate.c (collect_iterators): Broke out operand classification code
	into get_max_tree_operands.
	* tree.c (get_max_tree_operands): Returns max. valid number of operands
	used solely in parse tree.
	* tree.h: appended prototype.
	* c-typeck.c (build_modify_expr): Added call to check_modify_expr
	(check_modify_expr): Created, checks and warns for some undefined syntax.


	I hope this is useful,

	Regards,

		Michael Meeks.

-- 
 michael@imaginator.com  <><, Pseudo Engineer, itinerant idiot


More information about the Gcc-patches mailing list