eggert@twinsun.com (Paul Eggert) (10/31/89)
The GCC manual says that constructor expressions must yield a value of
structure, union, or array type.  But this doesn't make sense:
	V = (T){X};
should be equivalent to
	{ T temp = {X}; V = temp; }
regardless of whether T is a structure, union, or array type.
Furthermore, it doesn't agree with GCC 1.36 (Sun-3, SunOS4.0.3c, with fix from
rms@ai.mit.edu 1989/10/19 19:15:07 EDT that permits union initializers with
elided braces), which lets constructor expressions yield values of other
types.  For example, the program
	main() { return (int){0}; }
compiles to the same code as
	main() { return 0; }
Here is a fix.
*** old/gcc.texinfo	Mon Oct 30 16:59:22 1989
--- new/gcc.texinfo	Mon Oct 30 16:49:04 1989
***************
*** 2668,2675 ****
  
  GNU C supports constructor expressions.  A constructor looks like a cast
  containing an initializer.  Its value is an object of the type specified in
! the cast, containing the elements specified in the initializer.  The type
! must be a structure, union or array type.
  
  Assume that @code{struct foo} and @code{structure} are declared as shown:
  
--- 2668,2674 ----
  
  GNU C supports constructor expressions.  A constructor looks like a cast
  containing an initializer.  Its value is an object of the type specified in
! the cast, containing the elements specified in the initializer.
  
  Assume that @code{struct foo} and @code{structure} are declared as shown: