On Thu, May 25, 2023 at 2:32 AM naveenh--- via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> From: Naveen H S <nave...@marvell.com>
>
> This patch adds support scalar_storage_order attribute to C++ front-end.
> It treats the opposite order fields similar as the packed fields are
> treated such that they will not bind to references.
> For arrays, the attributes applies to the inner type rather than the array
> type similar. The code is similar to how it is handled in the C front-end.
>
> 2021-04-03  Andrew Pinski   <apin...@marvell.com>
>
> Co-authored-by: Naveen H S <nave...@marvell.com>

First off, sorry this was sent multiple times to the list, Naveen
didn't know Marvell's internal email SMTP server was delaying the mail
so much; he didn't realize it went through so he sent it again. I let
him know next time to send it and come back in an hour to see if it
made it through for next time.

Ping?

Thanks,
Andrew


>
> gcc/ChangeLog:
>
>         * c-family/c-attribs.cc (handle_scalar_storage_order_attribute):
>         Do not reject the C++ cases.
>         * cp/class.cc (layout_nonempty_base_or_field): Fix the type of
>         arrays in C++.
>         * cp/call.cc (reference_binding): Treat reversed field similar as
>         packed fields.
>         (build_temp): Likewise.
>         (convert_like_internal): Emit error code for non binding reversed
>         endian field.
>         * cp/cp-tree.h (clk_implicit_rval) : Add clk_reversed.
>         * cp/cp-tree.c (lvalue_kind) : Handle reverse storage ordered 
> operands.
>
> gcc/testsuite/ChangeLog:
>
>         * c-c++-common/sso/dump.h: Move from gcc.dg/sso to c-c++-common/sso.
>         * c-c++-common/sso/init1.h: Likewise.
>         * c-c++-common/sso/init13.h: Likewise.
>         * c-c++-common/sso/init2.h: Likewise.
>         * c-c++-common/sso/init3.h: Likewise.
>         * c-c++-common/sso/init4.h: Likewise.
>         * c-c++-common/sso/init5.h: Likewise.
>         * c-c++-common/sso/init6.h: Likewise.
>         * c-c++-common/sso/init7.h: Likewise.
>         * c-c++-common/sso/init8.h: Likewise.
>         * c-c++-common/sso/init9.h: Likewise.
>         * c-c++-common/sso/p1.c: Likewise.
>         * c-c++-common/sso/p13.c: Likewise.
>         * c-c++-common/sso/p2.c: Likewise.
>         * c-c++-common/sso/p3.c: Likewise.
>         * c-c++-common/sso/p4.c: Likewise.
>         * c-c++-common/sso/p5.c: Likewise.
>         * c-c++-common/sso/p6.c: Likewise.
>         * c-c++-common/sso/p7.c: Likewise.
>         * c-c++-common/sso/p8.c: Likewise.
>         * c-c++-common/sso/p9.c: Likewise.
>         * c-c++-common/sso/q1.c: Likewise.
>         * c-c++-common/sso/q13.c: Likewise.
>         * c-c++-common/sso/q2.c: Likewise.
>         * c-c++-common/sso/q3.c: Likewise.
>         * c-c++-common/sso/q4.c: Likewise.
>         * c-c++-common/sso/q5.c: Likewise.
>         * c-c++-common/sso/q6.c: Likewise.
>         * c-c++-common/sso/q7.c: Likewise.
>         * c-c++-common/sso/q8.c: Likewise.
>         * c-c++-common/sso/q9.c: Likewise.
>         * c-c++-common/sso/r3.c: Likewise.
>         * c-c++-common/sso/r5.c: Likewise.
>         * c-c++-common/sso/r6.c: Likewise.
>         * c-c++-common/sso/r7.c: Likewise.
>         * c-c++-common/sso/r8.c: Likewise.
>         * c-c++-common/sso/s3.c: Likewise.
>         * c-c++-common/sso/s5.c: Likewise.
>         * c-c++-common/sso/s6.c: Likewise.
>         * c-c++-common/sso/s7.c: Likewise.
>         * c-c++-common/sso/s8.c: Likewise.
>         * c-c++-common/sso/t1.c: Likewise.
>         * c-c++-common/sso/t13.c: Likewise.
>         * c-c++-common/sso/t2.c: Likewise.
>         * c-c++-common/sso/t3.c: Likewise.
>         * c-c++-common/sso/t4.c: Likewise.
>         * c-c++-common/sso/t5.c: Likewise.
>         * c-c++-common/sso/t6.c: Likewise.
>         * c-c++-common/sso/t7.c: Likewise.
>         * c-c++-common/sso/t8.c: Likewise.
>         * c-c++-common/sso/t9.c: Likewise.
>         * c-c++-common/sso/u5.c: Likewise.
>         * c-c++-common/sso/t6.c: Likewise.
>         * g++.dg/sso/sso.exp: New file.
>         * g++.dg/sso/auto-1.C: New file.
>         * g++.dg/sso/auto-2.C: New file.
>         * g++.dg/sso/auto-3.C: New file.
>         * g++.dg/sso/template-reference-1.C: New file.
>         * g++.dg/sso/template-reference-2.C: New file.
>         * g++.dg/sso/template-reference-3.C: New file.
>         * g++.dg/sso/template-reference-4.C: New file.
>         * g++.dg/sso-1.C: Modified.
> ---
>  gcc/c-family/c-attribs.cc                     |  2 +-
>  gcc/cp/call.cc                                | 17 ++++++-
>  gcc/cp/class.cc                               | 22 ++++++++++
>  gcc/cp/cp-tree.h                              |  3 +-
>  gcc/cp/tree.cc                                |  5 ++-
>  .../{gcc.dg => c-c++-common}/sso/dump.h       |  0
>  .../{gcc.dg => c-c++-common}/sso/init1.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init13.h     |  0
>  .../{gcc.dg => c-c++-common}/sso/init2.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init3.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init4.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init5.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init6.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init7.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init8.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/init9.h      |  0
>  .../{gcc.dg => c-c++-common}/sso/p1.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p13.c        |  1 +
>  .../{gcc.dg => c-c++-common}/sso/p2.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p3.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p4.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p5.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p6.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p7.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p8.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/p9.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q1.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q13.c        |  1 +
>  .../{gcc.dg => c-c++-common}/sso/q2.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q3.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q4.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q5.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q6.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q7.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q8.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/q9.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/r3.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/r5.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/r6.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/r7.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/r8.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/s3.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/s5.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/s6.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/s7.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/s8.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t1.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t13.c        |  1 +
>  .../{gcc.dg => c-c++-common}/sso/t2.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t3.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t4.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t5.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t6.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t7.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t8.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/t9.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/u5.c         |  0
>  .../{gcc.dg => c-c++-common}/sso/u6.c         |  0
>  gcc/testsuite/g++.dg/sso-1.C                  |  2 +-
>  gcc/testsuite/g++.dg/sso/auto-1.C             | 17 +++++++
>  gcc/testsuite/g++.dg/sso/auto-2.C             | 17 +++++++
>  gcc/testsuite/g++.dg/sso/auto-3.C             | 17 +++++++
>  gcc/testsuite/g++.dg/sso/sso.exp              | 44 +++++++++++++++++++
>  .../g++.dg/sso/template-reference-1.C         | 19 ++++++++
>  .../g++.dg/sso/template-reference-2.C         | 19 ++++++++
>  .../g++.dg/sso/template-reference-3.C         | 19 ++++++++
>  .../g++.dg/sso/template-reference-4.C         | 19 ++++++++
>  gcc/testsuite/gcc.dg/sso/sso.exp              |  2 +-
>  68 files changed, 220 insertions(+), 7 deletions(-)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/dump.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init1.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init13.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init2.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init3.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init4.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init5.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init6.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init7.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init8.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/init9.h (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p1.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p13.c (95%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p2.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p3.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p4.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p5.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p6.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p7.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p8.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/p9.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q1.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q13.c (92%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q2.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q3.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q4.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q5.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q6.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q7.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q8.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/q9.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/r3.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/r5.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/r6.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/r7.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/r8.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/s3.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/s5.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/s6.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/s7.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/s8.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t1.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t13.c (94%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t2.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t3.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t4.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t5.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t6.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t7.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t8.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/t9.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/u5.c (100%)
>  rename gcc/testsuite/{gcc.dg => c-c++-common}/sso/u6.c (100%)
>  create mode 100644 gcc/testsuite/g++.dg/sso/auto-1.C
>  create mode 100644 gcc/testsuite/g++.dg/sso/auto-2.C
>  create mode 100644 gcc/testsuite/g++.dg/sso/auto-3.C
>  create mode 100644 gcc/testsuite/g++.dg/sso/sso.exp
>  create mode 100644 gcc/testsuite/g++.dg/sso/template-reference-1.C
>  create mode 100644 gcc/testsuite/g++.dg/sso/template-reference-2.C
>  create mode 100644 gcc/testsuite/g++.dg/sso/template-reference-3.C
>  create mode 100644 gcc/testsuite/g++.dg/sso/template-reference-4.C
>
> diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc
> index 072cfb69147..8ae48166f62 100644
> --- a/gcc/c-family/c-attribs.cc
> +++ b/gcc/c-family/c-attribs.cc
> @@ -1794,7 +1794,7 @@ handle_scalar_storage_order_attribute (tree *node, tree 
> name, tree args,
>        return NULL_TREE;
>      }
>
> -  if (RECORD_OR_UNION_TYPE_P (type) && !c_dialect_cxx ())
> +  if (RECORD_OR_UNION_TYPE_P (type))
>      {
>        bool reverse = false;
>
> diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc
> index 2736f55f229..c3804bc48c4 100644
> --- a/gcc/cp/call.cc
> +++ b/gcc/cp/call.cc
> @@ -1862,7 +1862,8 @@ reference_binding (tree rto, tree rfrom, tree expr, 
> bool c_cast_p, int flags,
>            = (TYPE_REF_IS_RVALUE (rto) == !is_lvalue);
>
>        if ((gl_kind & clk_bitfield) != 0
> -         || ((gl_kind & clk_packed) != 0 && !TYPE_PACKED (to)))
> +         || ((gl_kind & clk_packed) != 0 && !TYPE_PACKED (to))
> +         || (gl_kind & clk_reversed) != 0)
>         /* For the purposes of overload resolution, we ignore the fact
>            this expression is a bitfield or packed field. (In particular,
>            [over.ics.ref] says specifically that a function with a
> @@ -8084,7 +8085,8 @@ build_temp (tree expr, tree type, int flags,
>       binding the field to the reference parameter to the copy constructor, 
> and
>       we'll end up with an infinite loop.  If we can use a bitwise copy, then
>       do that now.  */
> -  if ((lvalue_kind (expr) & clk_packed)
> +  if (((lvalue_kind (expr) & clk_packed)
> +       || (lvalue_kind (expr) & clk_reversed))
>        && CLASS_TYPE_P (TREE_TYPE (expr))
>        && !type_has_nontrivial_copy_init (TREE_TYPE (expr)))
>      return get_target_expr (expr, complain);
> @@ -8781,6 +8783,9 @@ convert_like_internal (conversion *convs, tree expr, 
> tree fn, int argnum,
>                     else if (lvalue & clk_packed)
>                       error_at (loc, "cannot bind packed field %qE to %qT",
>                                 expr, ref_type);
> +                   else if (lvalue & clk_reversed)
> +                     error_at (loc, "cannot bind reversed endian field %qE 
> to %qT",
> +                               expr, ref_type);
>                     else
>                       error_at (loc, "cannot bind rvalue %qE to %qT",
>                                 expr, ref_type);
> @@ -8801,6 +8806,14 @@ convert_like_internal (conversion *convs, tree expr, 
> tree fn, int argnum,
>                           expr, ref_type);
>                 return error_mark_node;
>               }
> +           if ((lvalue & clk_reversed)
> +               && CLASS_TYPE_P (type)
> +               && type_has_nontrivial_copy_init (type))
> +             {
> +               error_at (loc, "cannot bind reversed endian field %qE to %qT",
> +                         expr, ref_type);
> +               return error_mark_node;
> +             }
>             if (lvalue & clk_bitfield)
>               {
>                 expr = convert_bitfield_to_declared_type (expr);
> diff --git a/gcc/cp/class.cc b/gcc/cp/class.cc
> index bc84f4f731a..7537bf640f3 100644
> --- a/gcc/cp/class.cc
> +++ b/gcc/cp/class.cc
> @@ -4387,6 +4387,28 @@ layout_nonempty_base_or_field (record_layout_info rli,
>        field_p = true;
>      }
>
> +  /* Rewrite the type of array fields with scalar component
> +     if the enclosing type has reverse storage order  */
> +  if (TYPE_REVERSE_STORAGE_ORDER (rli->t)
> +      && TREE_CODE (decl) == FIELD_DECL
> +      && TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE)
> +    {
> +      tree ftype = TREE_TYPE (decl);
> +      tree ctype = strip_array_types (ftype);
> +      if (!RECORD_OR_UNION_TYPE_P (ctype) && TYPE_MODE (ctype) != QImode)
> +       {
> +         tree fmain_type = TYPE_MAIN_VARIANT (ftype);
> +         tree *typep = &fmain_type;
> +         do {
> +           *typep = build_distinct_type_copy (*typep);
> +           TYPE_REVERSE_STORAGE_ORDER (*typep) = 1;
> +           typep = &TREE_TYPE (*typep);
> +         } while (TREE_CODE (*typep) == ARRAY_TYPE);
> +         TREE_TYPE (decl)
> +           = cp_build_qualified_type (fmain_type, TYPE_QUALS (ftype));
> +       }
> +    }
> +
>    /* Try to place the field.  It may take more than one try if we have
>       a hard time placing the field without putting two objects of the
>       same type at the same address.  */
> diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
> index a1b882f11fe..ae5d0bf7ebe 100644
> --- a/gcc/cp/cp-tree.h
> +++ b/gcc/cp/cp-tree.h
> @@ -5464,7 +5464,8 @@ enum cp_lvalue_kind_flags {
>    clk_class = 4,    /* A prvalue of class or array type.  */
>    clk_bitfield = 8, /* An lvalue for a bit-field.  */
>    clk_packed = 16,  /* An lvalue for a packed field.  */
> -  clk_implicit_rval = 1<<5 /* An lvalue being treated as an xvalue.  */
> +  clk_implicit_rval = 1<<5, /* An lvalue being treated as an xvalue.  */
> +  clk_reversed = 1<<6  /* An lvalue for a reversed field.  */
>  };
>
>  /* This type is used for parameters and variables which hold
> diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
> index 19dfb3ed782..5384bc9ef07 100644
> --- a/gcc/cp/tree.cc
> +++ b/gcc/cp/tree.cc
> @@ -186,6 +186,9 @@ lvalue_kind (const_tree ref)
>         }
>        else if (DECL_PACKED (TREE_OPERAND (ref, 1)))
>         op1_lvalue_kind |= clk_packed;
> +      else if (AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (ref, 0)))
> +              && TYPE_REVERSE_STORAGE_ORDER (TREE_TYPE (TREE_OPERAND (ref, 
> 0))))
> +       op1_lvalue_kind |= clk_reversed;
>
>        return op1_lvalue_kind;
>
> @@ -342,7 +345,7 @@ lvalue_kind (const_tree ref)
>    /* It can't be both a pseudo-lvalue and a non-addressable lvalue.
>       A COND_EXPR of those should be wrapped in a TARGET_EXPR.  */
>    if ((op1_lvalue_kind & (clk_rvalueref|clk_class))
> -      && (op1_lvalue_kind & (clk_bitfield|clk_packed)))
> +      && (op1_lvalue_kind & (clk_bitfield|clk_packed|clk_reversed)))
>      op1_lvalue_kind = clk_none;
>    return op1_lvalue_kind;
>  }
> diff --git a/gcc/testsuite/gcc.dg/sso/dump.h 
> b/gcc/testsuite/c-c++-common/sso/dump.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/dump.h
> rename to gcc/testsuite/c-c++-common/sso/dump.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init1.h 
> b/gcc/testsuite/c-c++-common/sso/init1.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init1.h
> rename to gcc/testsuite/c-c++-common/sso/init1.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init13.h 
> b/gcc/testsuite/c-c++-common/sso/init13.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init13.h
> rename to gcc/testsuite/c-c++-common/sso/init13.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init2.h 
> b/gcc/testsuite/c-c++-common/sso/init2.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init2.h
> rename to gcc/testsuite/c-c++-common/sso/init2.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init3.h 
> b/gcc/testsuite/c-c++-common/sso/init3.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init3.h
> rename to gcc/testsuite/c-c++-common/sso/init3.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init4.h 
> b/gcc/testsuite/c-c++-common/sso/init4.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init4.h
> rename to gcc/testsuite/c-c++-common/sso/init4.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init5.h 
> b/gcc/testsuite/c-c++-common/sso/init5.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init5.h
> rename to gcc/testsuite/c-c++-common/sso/init5.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init6.h 
> b/gcc/testsuite/c-c++-common/sso/init6.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init6.h
> rename to gcc/testsuite/c-c++-common/sso/init6.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init7.h 
> b/gcc/testsuite/c-c++-common/sso/init7.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init7.h
> rename to gcc/testsuite/c-c++-common/sso/init7.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init8.h 
> b/gcc/testsuite/c-c++-common/sso/init8.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init8.h
> rename to gcc/testsuite/c-c++-common/sso/init8.h
> diff --git a/gcc/testsuite/gcc.dg/sso/init9.h 
> b/gcc/testsuite/c-c++-common/sso/init9.h
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/init9.h
> rename to gcc/testsuite/c-c++-common/sso/init9.h
> diff --git a/gcc/testsuite/gcc.dg/sso/p1.c 
> b/gcc/testsuite/c-c++-common/sso/p1.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p1.c
> rename to gcc/testsuite/c-c++-common/sso/p1.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p13.c 
> b/gcc/testsuite/c-c++-common/sso/p13.c
> similarity index 95%
> rename from gcc/testsuite/gcc.dg/sso/p13.c
> rename to gcc/testsuite/c-c++-common/sso/p13.c
> index 33af5027bd6..b7ec935e69f 100644
> --- a/gcc/testsuite/gcc.dg/sso/p13.c
> +++ b/gcc/testsuite/c-c++-common/sso/p13.c
> @@ -1,4 +1,5 @@
>  /* { dg-do run } */
> +/* { dg-additional-options "-fext-numeric-literals" { target c++ } } */
>
>  #include <stdio.h>
>
> diff --git a/gcc/testsuite/gcc.dg/sso/p2.c 
> b/gcc/testsuite/c-c++-common/sso/p2.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p2.c
> rename to gcc/testsuite/c-c++-common/sso/p2.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p3.c 
> b/gcc/testsuite/c-c++-common/sso/p3.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p3.c
> rename to gcc/testsuite/c-c++-common/sso/p3.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p4.c 
> b/gcc/testsuite/c-c++-common/sso/p4.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p4.c
> rename to gcc/testsuite/c-c++-common/sso/p4.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p5.c 
> b/gcc/testsuite/c-c++-common/sso/p5.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p5.c
> rename to gcc/testsuite/c-c++-common/sso/p5.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p6.c 
> b/gcc/testsuite/c-c++-common/sso/p6.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p6.c
> rename to gcc/testsuite/c-c++-common/sso/p6.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p7.c 
> b/gcc/testsuite/c-c++-common/sso/p7.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p7.c
> rename to gcc/testsuite/c-c++-common/sso/p7.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p8.c 
> b/gcc/testsuite/c-c++-common/sso/p8.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p8.c
> rename to gcc/testsuite/c-c++-common/sso/p8.c
> diff --git a/gcc/testsuite/gcc.dg/sso/p9.c 
> b/gcc/testsuite/c-c++-common/sso/p9.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/p9.c
> rename to gcc/testsuite/c-c++-common/sso/p9.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q1.c 
> b/gcc/testsuite/c-c++-common/sso/q1.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q1.c
> rename to gcc/testsuite/c-c++-common/sso/q1.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q13.c 
> b/gcc/testsuite/c-c++-common/sso/q13.c
> similarity index 92%
> rename from gcc/testsuite/gcc.dg/sso/q13.c
> rename to gcc/testsuite/c-c++-common/sso/q13.c
> index cacc2a9860b..0cbf268d503 100644
> --- a/gcc/testsuite/gcc.dg/sso/q13.c
> +++ b/gcc/testsuite/c-c++-common/sso/q13.c
> @@ -1,4 +1,5 @@
>  /* { dg-do run } */
> +/* { dg-additional-options "-fext-numeric-literals" { target c++ } } */
>
>  #include <stdio.h>
>
> diff --git a/gcc/testsuite/gcc.dg/sso/q2.c 
> b/gcc/testsuite/c-c++-common/sso/q2.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q2.c
> rename to gcc/testsuite/c-c++-common/sso/q2.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q3.c 
> b/gcc/testsuite/c-c++-common/sso/q3.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q3.c
> rename to gcc/testsuite/c-c++-common/sso/q3.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q4.c 
> b/gcc/testsuite/c-c++-common/sso/q4.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q4.c
> rename to gcc/testsuite/c-c++-common/sso/q4.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q5.c 
> b/gcc/testsuite/c-c++-common/sso/q5.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q5.c
> rename to gcc/testsuite/c-c++-common/sso/q5.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q6.c 
> b/gcc/testsuite/c-c++-common/sso/q6.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q6.c
> rename to gcc/testsuite/c-c++-common/sso/q6.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q7.c 
> b/gcc/testsuite/c-c++-common/sso/q7.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q7.c
> rename to gcc/testsuite/c-c++-common/sso/q7.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q8.c 
> b/gcc/testsuite/c-c++-common/sso/q8.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q8.c
> rename to gcc/testsuite/c-c++-common/sso/q8.c
> diff --git a/gcc/testsuite/gcc.dg/sso/q9.c 
> b/gcc/testsuite/c-c++-common/sso/q9.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/q9.c
> rename to gcc/testsuite/c-c++-common/sso/q9.c
> diff --git a/gcc/testsuite/gcc.dg/sso/r3.c 
> b/gcc/testsuite/c-c++-common/sso/r3.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/r3.c
> rename to gcc/testsuite/c-c++-common/sso/r3.c
> diff --git a/gcc/testsuite/gcc.dg/sso/r5.c 
> b/gcc/testsuite/c-c++-common/sso/r5.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/r5.c
> rename to gcc/testsuite/c-c++-common/sso/r5.c
> diff --git a/gcc/testsuite/gcc.dg/sso/r6.c 
> b/gcc/testsuite/c-c++-common/sso/r6.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/r6.c
> rename to gcc/testsuite/c-c++-common/sso/r6.c
> diff --git a/gcc/testsuite/gcc.dg/sso/r7.c 
> b/gcc/testsuite/c-c++-common/sso/r7.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/r7.c
> rename to gcc/testsuite/c-c++-common/sso/r7.c
> diff --git a/gcc/testsuite/gcc.dg/sso/r8.c 
> b/gcc/testsuite/c-c++-common/sso/r8.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/r8.c
> rename to gcc/testsuite/c-c++-common/sso/r8.c
> diff --git a/gcc/testsuite/gcc.dg/sso/s3.c 
> b/gcc/testsuite/c-c++-common/sso/s3.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/s3.c
> rename to gcc/testsuite/c-c++-common/sso/s3.c
> diff --git a/gcc/testsuite/gcc.dg/sso/s5.c 
> b/gcc/testsuite/c-c++-common/sso/s5.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/s5.c
> rename to gcc/testsuite/c-c++-common/sso/s5.c
> diff --git a/gcc/testsuite/gcc.dg/sso/s6.c 
> b/gcc/testsuite/c-c++-common/sso/s6.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/s6.c
> rename to gcc/testsuite/c-c++-common/sso/s6.c
> diff --git a/gcc/testsuite/gcc.dg/sso/s7.c 
> b/gcc/testsuite/c-c++-common/sso/s7.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/s7.c
> rename to gcc/testsuite/c-c++-common/sso/s7.c
> diff --git a/gcc/testsuite/gcc.dg/sso/s8.c 
> b/gcc/testsuite/c-c++-common/sso/s8.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/s8.c
> rename to gcc/testsuite/c-c++-common/sso/s8.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t1.c 
> b/gcc/testsuite/c-c++-common/sso/t1.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t1.c
> rename to gcc/testsuite/c-c++-common/sso/t1.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t13.c 
> b/gcc/testsuite/c-c++-common/sso/t13.c
> similarity index 94%
> rename from gcc/testsuite/gcc.dg/sso/t13.c
> rename to gcc/testsuite/c-c++-common/sso/t13.c
> index 223b42dc952..313e79cc0b7 100644
> --- a/gcc/testsuite/gcc.dg/sso/t13.c
> +++ b/gcc/testsuite/c-c++-common/sso/t13.c
> @@ -1,4 +1,5 @@
>  /* { dg-do run } */
> +/* { dg-additional-options "-fext-numeric-literals" { target c++ } } */
>
>  #include <stdio.h>
>
> diff --git a/gcc/testsuite/gcc.dg/sso/t2.c 
> b/gcc/testsuite/c-c++-common/sso/t2.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t2.c
> rename to gcc/testsuite/c-c++-common/sso/t2.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t3.c 
> b/gcc/testsuite/c-c++-common/sso/t3.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t3.c
> rename to gcc/testsuite/c-c++-common/sso/t3.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t4.c 
> b/gcc/testsuite/c-c++-common/sso/t4.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t4.c
> rename to gcc/testsuite/c-c++-common/sso/t4.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t5.c 
> b/gcc/testsuite/c-c++-common/sso/t5.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t5.c
> rename to gcc/testsuite/c-c++-common/sso/t5.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t6.c 
> b/gcc/testsuite/c-c++-common/sso/t6.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t6.c
> rename to gcc/testsuite/c-c++-common/sso/t6.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t7.c 
> b/gcc/testsuite/c-c++-common/sso/t7.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t7.c
> rename to gcc/testsuite/c-c++-common/sso/t7.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t8.c 
> b/gcc/testsuite/c-c++-common/sso/t8.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t8.c
> rename to gcc/testsuite/c-c++-common/sso/t8.c
> diff --git a/gcc/testsuite/gcc.dg/sso/t9.c 
> b/gcc/testsuite/c-c++-common/sso/t9.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/t9.c
> rename to gcc/testsuite/c-c++-common/sso/t9.c
> diff --git a/gcc/testsuite/gcc.dg/sso/u5.c 
> b/gcc/testsuite/c-c++-common/sso/u5.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/u5.c
> rename to gcc/testsuite/c-c++-common/sso/u5.c
> diff --git a/gcc/testsuite/gcc.dg/sso/u6.c 
> b/gcc/testsuite/c-c++-common/sso/u6.c
> similarity index 100%
> rename from gcc/testsuite/gcc.dg/sso/u6.c
> rename to gcc/testsuite/c-c++-common/sso/u6.c
> diff --git a/gcc/testsuite/g++.dg/sso-1.C b/gcc/testsuite/g++.dg/sso-1.C
> index 0f59d0c4069..e4777da8036 100644
> --- a/gcc/testsuite/g++.dg/sso-1.C
> +++ b/gcc/testsuite/g++.dg/sso-1.C
> @@ -2,7 +2,7 @@
>
>  /* { dg-do compile } */
>
> -struct __attribute__((scalar_storage_order("little-endian"))) Rec /* { 
> dg-warning "attribute ignored" } */
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec /* { 
> dg-bogus "attribute ignored" } */
>  {
>    int i;
>  };
> diff --git a/gcc/testsuite/g++.dg/sso/auto-1.C 
> b/gcc/testsuite/g++.dg/sso/auto-1.C
> new file mode 100644
> index 00000000000..12ebcc1707b
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/auto-1.C
> @@ -0,0 +1,17 @@
> +/* { dg-do compile { target c++11 }  } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +
> +void f(Rec *a)
> +{
> +  auto t = a->p;
> +}
> diff --git a/gcc/testsuite/g++.dg/sso/auto-2.C 
> b/gcc/testsuite/g++.dg/sso/auto-2.C
> new file mode 100644
> index 00000000000..d69ca8d0c66
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/auto-2.C
> @@ -0,0 +1,17 @@
> +/* { dg-do compile { target c++14 }  } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +
> +decltype(auto) f(Rec *a)
> +{
> +  return a->p;
> +}
> diff --git a/gcc/testsuite/g++.dg/sso/auto-3.C 
> b/gcc/testsuite/g++.dg/sso/auto-3.C
> new file mode 100644
> index 00000000000..80eab2389d5
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/auto-3.C
> @@ -0,0 +1,17 @@
> +/* { dg-do compile { target c++14 }  } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +
> +decltype(auto) f(Rec *a)
> +{
> +  return (a->p); /* { dg-error "" } */
> +}
> diff --git a/gcc/testsuite/g++.dg/sso/sso.exp 
> b/gcc/testsuite/g++.dg/sso/sso.exp
> new file mode 100644
> index 00000000000..0684596e10f
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/sso.exp
> @@ -0,0 +1,44 @@
> +# Copyright (C) 2013-2017 Free Software Foundation, Inc.
> +
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with GCC; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +
> +# Load support procs.
> +load_lib g++-dg.exp
> +load_lib torture-options.exp
> +
> +if { ![check_effective_target_int32] } {
> +    return
> +}
> +
> +# Initialize `dg'.
> +torture-init
> +dg-init
> +
> +set SSO_TORTURE_OPTIONS [list \
> +       { -O0 } \
> +       { -O1 -fno-inline } \
> +       { -O2 } \
> +       { -O3 -finline-functions } \
> +       { -Os } \
> +       { -Og -g } ]
> +
> +set-torture-options $SSO_TORTURE_OPTIONS
> +
> +# Main loop.
> +g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C  
> $srcdir/c-c++-common/sso/*.c ]] "" ""
> +
> +# All done.
> +dg-finish
> +torture-finish
> diff --git a/gcc/testsuite/g++.dg/sso/template-reference-1.C 
> b/gcc/testsuite/g++.dg/sso/template-reference-1.C
> new file mode 100644
> index 00000000000..8925dff9930
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/template-reference-1.C
> @@ -0,0 +1,19 @@
> +/* { dg-do compile } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +template <typename T> void g(const T &);
> +
> +
> +void f(Rec *a)
> +{
> +  g(a->p);
> +}
> diff --git a/gcc/testsuite/g++.dg/sso/template-reference-2.C 
> b/gcc/testsuite/g++.dg/sso/template-reference-2.C
> new file mode 100644
> index 00000000000..f871833991e
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/template-reference-2.C
> @@ -0,0 +1,19 @@
> +/* { dg-do compile } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +template <typename T> void g(T &);
> +
> +
> +void f(Rec *a)
> +{
> +  g(a->p); /* { dg-error "" } */
> +}
> diff --git a/gcc/testsuite/g++.dg/sso/template-reference-3.C 
> b/gcc/testsuite/g++.dg/sso/template-reference-3.C
> new file mode 100644
> index 00000000000..5c2ebd37832
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/template-reference-3.C
> @@ -0,0 +1,19 @@
> +/* { dg-do compile { target c++11 }  } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +template <typename T> void g(T &&);
> +
> +
> +void f(Rec *a)
> +{
> +  g(a->p); /* { dg-error "" } */
> +}
> diff --git a/gcc/testsuite/g++.dg/sso/template-reference-4.C 
> b/gcc/testsuite/g++.dg/sso/template-reference-4.C
> new file mode 100644
> index 00000000000..acc56e2e819
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/sso/template-reference-4.C
> @@ -0,0 +1,19 @@
> +/* { dg-do compile } */
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +struct __attribute__((scalar_storage_order("big-endian"))) Rec
> +{
> +  int p;
> +};
> +#else
> +struct __attribute__((scalar_storage_order("little-endian"))) Rec
> +{
> +  int p;
> +};
> +#endif
> +template <typename T> void g(T &);
> +
> +
> +void f(Rec *a)
> +{
> +  g( (a->p)); /* { dg-error "" } */
> +}
> diff --git a/gcc/testsuite/gcc.dg/sso/sso.exp 
> b/gcc/testsuite/gcc.dg/sso/sso.exp
> index a18f7011cea..59e756565a4 100644
> --- a/gcc/testsuite/gcc.dg/sso/sso.exp
> +++ b/gcc/testsuite/gcc.dg/sso/sso.exp
> @@ -37,7 +37,7 @@ set SSO_TORTURE_OPTIONS [list \
>  set-torture-options $SSO_TORTURE_OPTIONS
>
>  # Main loop.
> -gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] "" ""
> +gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c  
> $srcdir/c-c++-common/sso/*.c ]] "" ""
>
>  # All done.
>  dg-finish
> --
> 2.30.2
>

Reply via email to