On 16/06/15 09:54, Eric Botcazou wrote:
This is the C front-end + C family part. * doc/extend.texi (type attributes): Document scalar_storage_order. * doc/invoke.texi (Warnings): Document -Wno-scalar-storage-order. c-family/ * c-common.c (c_common_attributes): Add scalar_storage_order. (handle_scalar_storage_order_attribute): New function. * c.opt (Wscalar-storage-order): New warning. c/ * c-decl.c (finish_struct): If the structure has reverse scalar storage order, rewrite the type of array fields with scalar component. * c-typeck.c (build_unary_op) <ADDR_EXPR>: Remove left-overs. Issue errors on bit-fields and reverse SSO here and not... (c_mark_addressable): ...here. doc/extend.texi | 47 +++++++++++++++++++++++++++++++++++++++++++++ doc/invoke.texi | 6 +++++ c-family/c.opt | 4 +++ c-family/c-common.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++- c/c-typeck.c | 53 +++++++++++++++++++++++++++++++------------------- c/c-decl.c | 45 +++++++++++++++++++++++++++++-------------- 6 files changed, 175 insertions(+), 34 deletions(-)
A very cursory glance at the patch set but should we restrict this attribute to apply only to scalar types rather than allow them on vector extensions. I haven't had enough coffee this morning but a first thought is that if it does apply on vector type extensions, clarifying the lane ordering up front would be helpful especially as we now allow indexing into short vectors.
regards Ramana