From e1cf192b12c2b025dc675a05e88e9eb38ae82731 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 22 Jan 2016 09:25:58 +0000 Subject: [PATCH] extend.texi (scalar_storage_order type attribute): Document restriction on type punning and aliasing, and remove future tense. * doc/extend.texi (scalar_storage_order type attribute): Document restriction on type punning and aliasing, and remove future tense. From-SVN: r232718 --- gcc/ChangeLog | 5 +++++ gcc/doc/extend.texi | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 113d8416768..ac617a9a044 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 e11ce4d3e5a..7e079ff7285 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 -- 2.30.2