From: ebotcazou Date: Fri, 22 Jan 2016 09:25:58 +0000 (+0000) Subject: * doc/extend.texi (scalar_storage_order type attribute): Document X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=52d0cdcb0976584029a8a130f4e5f069ddeb9ccd;p=thirdparty%2Fgcc.git * doc/extend.texi (scalar_storage_order type attribute): Document restriction on type punning and aliasing, and remove future tense. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232718 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 113d8416768d..ac617a9a0445 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-01-22 Eric Botcazou + + * doc/extend.texi (scalar_storage_order type attribute): Document + restriction on type punning and aliasing, and remove future tense. + 2016-01-21 Roman Zhuykov PR target/69252 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index e11ce4d3e5a2..7e079ff7285b 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -6496,22 +6496,26 @@ storage order with regard to the scalar storage order of the target: @itemize @item Taking the address of a scalar field of a @code{union} or a -@code{struct} with reverse scalar storage order is not permitted and will -yield an error. +@code{struct} with reverse scalar storage order is not permitted and yields +an error. @item Taking the address of an array field, whose component is scalar, of a @code{union} or a @code{struct} with reverse scalar storage order is -permitted but will yield a warning, unless @option{-Wno-scalar-storage-order} +permitted but yields a warning, unless @option{-Wno-scalar-storage-order} is specified. @item Taking the address of a @code{union} or a @code{struct} with reverse scalar storage order is permitted. @end itemize These restrictions exist because the storage order attribute is lost when -the address of a scalar or the address of an array with scalar component -is taken, so storing indirectly through this address will generally not work. +the address of a scalar or the address of an array with scalar component is +taken, so storing indirectly through this address generally does not work. The second case is nevertheless allowed to be able to perform a block copy from or to the array. +Moreover, the use of type punning or aliasing to toggle the storage order +is not supported; that is to say, a given scalar object cannot be accessed +through distinct types that assign a different storage order to it. + @item transparent_union @cindex @code{transparent_union} type attribute