re PR c/53608 (Documentation could be clearer about designated initializers of unions)
authorSandra Loosemore <sandra@codesourcery.com>
Fri, 23 Nov 2018 05:18:19 +0000 (00:18 -0500)
committerSandra Loosemore <sandra@gcc.gnu.org>
Fri, 23 Nov 2018 05:18:19 +0000 (00:18 -0500)
2018-11-22  Sandra Loosemore  <sandra@codesourcery.com>
    Alan Coopersmith  <alan.coopersmith@oracle.com>

PR c/53608

gcc/
* doc/extend.texi (Designated Inits): Clarify handling of multiple
initializers for unions.

Co-Authored-By: Alan Coopersmith <alan.coopersmith@oracle.com>
From-SVN: r266402

gcc/ChangeLog
gcc/doc/extend.texi

index fe222bad9e0fd43d26048a4b380d0bb8ff390153..508682f86eb2b72bdc4e2d9925e105a16d626fda 100644 (file)
@@ -1,3 +1,10 @@
+2018-11-22  Sandra Loosemore  <sandra@codesourcery.com>
+           Alan Coopersmith  <alan.coopersmith@oracle.com>
+
+       PR c/53608
+       * doc/extend.texi (Designated Inits): Clarify handling of multiple
+       initializers for unions.
+
 2018-11-22  Jan Hubicka  <jh@suse.cz>
 
        PR lto/88142
index 858b2d15440922fd4c6abf3521d71c2d6871421f..91baec3c886fefefc5433bb3872309309185ea17 100644 (file)
@@ -2104,7 +2104,7 @@ Another syntax that has the same meaning, obsolete since GCC 2.5, is
 struct point p = @{ y: yvalue, x: xvalue @};
 @end smallexample
 
-Omitted field members are implicitly initialized the same as objects
+Omitted fields are implicitly initialized the same as for objects
 that have static storage duration.
 
 @cindex designators
@@ -2162,11 +2162,13 @@ example, with the @samp{struct point} declaration above:
 struct point ptarray[10] = @{ [2].y = yv2, [2].x = xv2, [0].x = xv0 @};
 @end smallexample
 
-@noindent
-If the same field is initialized multiple times, it has the value from
-the last initialization.  If any such overridden initialization has
-side effect, it is unspecified whether the side effect happens or not.
-Currently, GCC discards them and issues a warning.
+If the same field is initialized multiple times, or overlapping
+fields of a union are initialized, the value from the last
+initialization is used.  When a field of a union is itself a structure, 
+the entire structure from the last field initialized is used.  If any previous
+initializer has side effect, it is unspecified whether the side effect
+happens or not.  Currently, GCC discards the side-effecting
+initializer expressions and issues a warning.
 
 @node Case Ranges
 @section Case Ranges