[COMMITTED] testsuite: Fix g++.dg/ext/attr-copy-2.C for default_packed targets

Message ID 20230302012552.279FF20433@pchp3.se.axis.com
State Repeat Merge
Headers
Series [COMMITTED] testsuite: Fix g++.dg/ext/attr-copy-2.C for default_packed targets |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Hans-Peter Nilsson March 2, 2023, 1:25 a.m. UTC
  Committed as obvious.  FWIW, I'm on the side that emitting
the warning when the reason is just that it's the default
layout, is bad.  A discussion took place years ago when the
warning was added.

-- >8 --
For targets where the byte-wise structure element layout is
the same as for attribute-packed, you get a warning when
that's specified.  Thus, expect a warning for such targets.
Note the exclusion of bitfields.

	* g++.dg/ext/attr-copy-2.C: Fix for default_packed targets.
---
 gcc/testsuite/g++.dg/ext/attr-copy-2.C | 60 +++++++++++++-------------
 1 file changed, 30 insertions(+), 30 deletions(-)
  

Patch

diff --git a/gcc/testsuite/g++.dg/ext/attr-copy-2.C b/gcc/testsuite/g++.dg/ext/attr-copy-2.C
index 7776959d9f6b..ffd6f22ef56d 100644
--- a/gcc/testsuite/g++.dg/ext/attr-copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/attr-copy-2.C
@@ -27,51 +27,51 @@  extern B &rb;
 
 typedef struct C
 {
-  ATTR (copy ((struct A *)0)) short m_pa_0;
-  ATTR (copy ((struct A *)(1, 0))) int m_pa_1_0;
-  ATTR (copy ((struct A *)(0, 1))) long m_pa_0_1;
+  ATTR (copy ((struct A *)0)) short m_pa_0; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy ((struct A *)(1, 0))) int m_pa_1_0; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy ((struct A *)(0, 1))) long m_pa_0_1; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (*(struct A *)0)) short m_xpa_0;
-  ATTR (copy (*(struct A *)(1, 0))) int m_xpa_1_0;
-  ATTR (copy (*(struct A *)(0, 1))) long m_xpa_0_1;
+  ATTR (copy (*(struct A *)0)) short m_xpa_0; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (*(struct A *)(1, 0))) int m_xpa_1_0; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (*(struct A *)(0, 1))) long m_xpa_0_1; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (((struct A *)0)[0])) short m_arpa_0;
-  ATTR (copy (((struct A *)(1, 0))[0])) int m_arpa_1_0;
-  ATTR (copy (((struct A *)(0, 1))[0])) long m_arpa_0_1;
+  ATTR (copy (((struct A *)0)[0])) short m_arpa_0; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (((struct A *)(1, 0))[0])) int m_arpa_1_0; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (((struct A *)(0, 1))[0])) long m_arpa_0_1; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (a)) short m_a;
-  ATTR (copy (b.a)) int m_b_a;
-  ATTR (copy (b.pa)) long m_b_pa;
-  ATTR (copy (b.ra)) long m_b_ra;
+  ATTR (copy (a)) short m_a; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (b.a)) int m_b_a; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (b.pa)) long m_b_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (b.ra)) long m_b_ra; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (&a)) short m_ara;
-  ATTR (copy (&b.a)) int m_arb_a;
-  ATTR (copy (*b.pa)) long m_xb_pa;
-  ATTR (copy (b.pa[0])) long m_arb_pa;
+  ATTR (copy (&a)) short m_ara; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (&b.a)) int m_arb_a; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (*b.pa)) long m_xb_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (b.pa[0])) long m_arb_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (*pa)) short m_xpa;
-  ATTR (copy (pa[0])) short m_arpa;
+  ATTR (copy (*pa)) short m_xpa; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (pa[0])) short m_arpa; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (ra)) short m_ra;
+  ATTR (copy (ra)) short m_ra; // { dg-warning "attribute ignored" "" { target default_packed } }
 
-  ATTR (copy (ab[0].a)) int m_arab_a;
-  ATTR (copy (ab[1].pa)) long m_arab_pa;
-  ATTR (copy (*ab[2].pa)) int m_xarab_pa;
+  ATTR (copy (ab[0].a)) int m_arab_a; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (ab[1].pa)) long m_arab_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (*ab[2].pa)) int m_xarab_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
   ATTR (copy (ab[3].pa->bf)) unsigned int m_arab_pa_bf: 1;
   ATTR (copy (ab[4].ra.bf)) unsigned int m_arab_ra_bf: 1;
 
-  ATTR (copy (pb->a)) int m_pb_a;
-  ATTR (copy (pb->pa)) long m_pb_pa;
-  ATTR (copy (*pb->pa)) int m_xpb_pa;
+  ATTR (copy (pb->a)) int m_pb_a; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (pb->pa)) long m_pb_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (*pb->pa)) int m_xpb_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
   ATTR (copy (pb->pa->bf)) unsigned int m_pb_pa_bf: 1;
   ATTR (copy (pb->ra.bf)) unsigned int m_pb_ra_bf: 1;
 
-  ATTR (copy (rb.a)) int m_rb_a;
-  ATTR (copy (rb.pa)) long m_rb_pa;
-  ATTR (copy (*rb.pa)) int m_xrb_pa;
+  ATTR (copy (rb.a)) int m_rb_a; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (rb.pa)) long m_rb_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
+  ATTR (copy (*rb.pa)) int m_xrb_pa; // { dg-warning "attribute ignored" "" { target default_packed } }
   ATTR (copy (rb.pa->bf)) unsigned int m_rb_pa_bf: 1;
 
-  ATTR (aligned (4), copy ((struct A *)(0))) short m_a4_pa_0;
+  ATTR (aligned (4), copy ((struct A *)(0))) short m_a4_pa_0; // { dg-warning "attribute ignored" "" { target default_packed } }
 } C;