]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
g++.dg/warn/Wplacement-new-size-1.C, -2, -6: Fix for default_packed targets
authorHans-Peter Nilsson <hp@axis.com>
Tue, 23 Feb 2021 00:43:50 +0000 (01:43 +0100)
committerHans-Peter Nilsson <hp@axis.com>
Tue, 23 Feb 2021 00:47:09 +0000 (01:47 +0100)
Looking at commit de05c19d5fd6, that adjustment to these
tests apparently assumed that the testsuite is run (only) on
targets where structure memory layout has padding as per
"natural alignment".  For cris-elf, a target with no padding
in structure memory layout, these tests have been failing
since that commit.

Tested cris-elf and x86_64-linux, committed as obvious.

gcc/testsuite:
* g++.dg/warn/Wplacement-new-size-1.C,
g++.dg/warn/Wplacement-new-size-2.C,
g++.dg/warn/Wplacement-new-size-6.C: Adjust for
default_packed targets.

gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
gcc/testsuite/g++.dg/warn/Wplacement-new-size-2.C
gcc/testsuite/g++.dg/warn/Wplacement-new-size-6.C

index cec83163dbe782375e601c8d3055d51d883d6bc3..1ad5c2da75af8996e5175a24a40cfd401f83d5ec 100644 (file)
@@ -67,8 +67,8 @@ void fBx (BAx *pbx, BAx &rbx)
 {
   BAx bax;
   // The uninitialized flexible array takes up the bytes of padding.
-  new (bax.ax.a) char;
-  new (bax.ax.a) Int16;
+  new (bax.ax.a) char;     // { dg-warning "placement" "" { target default_packed } }
+  new (bax.ax.a) Int16;    // { dg-warning "placement" "" { target default_packed } }
   new (bax.ax.a) Int32;    // { dg-warning "placement" }
 
   new (pbx->ax.a) char;
@@ -86,10 +86,10 @@ void fBx1 ()
   static BAx bax1 = { 1, /* Ax = */ { 2, /* a[] = */ {} } };
 
   // The empty flexible array takes up the bytes of padding.
-  new (bax1.ax.a) char;
-  new (bax1.ax.a) char[2];
-  new (bax1.ax.a) Int16;
-  new (bax1.ax.a) char[3];
+  new (bax1.ax.a) char;     // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) char[2];  // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) Int16;    // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) char[3];  // { dg-warning "placement" "" { target default_packed } }
   new (bax1.ax.a) char[4];  // { dg-warning "placement" }
   new (bax1.ax.a) Int32;    // { dg-warning "placement" }
 }
index e5fdfe1f603ee3b255e9185741396e82174d166c..a4de2b04629c16a570b711894ed7584f29e53b77 100644 (file)
@@ -125,9 +125,9 @@ void fBx (BAx *pbx, BAx &rbx)
 {
   BAx bax;
   // The uninitialized flexible array takes up the bytes of padding.
-  new (bax.ax.a) char;
-  new (bax.ax.a) Int16;
-  new (bax.ax.a) char[3];
+  new (bax.ax.a) char;        // { dg-warning "placement" "" { target default_packed } }
+  new (bax.ax.a) Int16;       // { dg-warning "placement" "" { target default_packed } }
+  new (bax.ax.a) char[3];     // { dg-warning "placement" "" { target default_packed } }
   new (bax.ax.a) Int32;       // { dg-warning "placement" }
   new (bax.ax.a) char[4];     // { dg-warning "placement" }
   new (bax.ax.a) char[5];     // { dg-warning "placement" }
@@ -147,10 +147,10 @@ void fBx1 ()
   static BAx bax1 = { 1, /* Ax = */ { 2, /* a[] = */ {} } };
 
   // The empty flexible array takes up the bytes of padding.
-  new (bax1.ax.a) char;
-  new (bax1.ax.a) char[2];
-  new (bax1.ax.a) Int16;
-  new (bax1.ax.a) char[3];
+  new (bax1.ax.a) char;       // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) char[2];    // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) Int16;      // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) char[3];    // { dg-warning "placement" "" { target default_packed } }
   new (bax1.ax.a) Int32;      // { dg-warning "placement" }
   new (bax1.ax.a) char[4];    // { dg-warning "placement" }
   new (bax1.ax.a) char[5];    // { dg-warning "placement" }
index 5eb63d23b477ff49c003be0d041f838ff4f30acc..86a18fa08e63ac5d1bca5d5e6e80f67f09378b34 100644 (file)
@@ -18,9 +18,9 @@ void fBx1 ()
   static BAx bax1 = { 1, /* Ax = */ { 2, /* a[] = */ { 3 } } }; // { dg-error "initialization of flexible array member in a nested context" }
 
   // The first three bytes of the flexible array member live in the padding.
-  new (bax1.ax.a) char;
-  new (bax1.ax.a) char[2];
-  new (bax1.ax.a) Int16;
+  new (bax1.ax.a) char;     // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) char[2];  // { dg-warning "placement" "" { target default_packed } }
+  new (bax1.ax.a) Int16;    // { dg-warning "placement" "" { target default_packed } }
   new (bax1.ax.a) Int32;    // { dg-warning "placement" }
 }
 
@@ -29,10 +29,10 @@ void fBx2 ()
   static BAx bax2 = { 1, /* Ax = */ { 2, /* a[] = */ { 3, 4 } } }; // { dg-error "initialization of flexible array member in a nested context" }
 
   // The first three bytes of the flexible array member live in the padding.
-  new (bax2.ax.a) char;
-  new (bax2.ax.a) char[2];
-  new (bax2.ax.a) char[3];
-  new (bax2.ax.a) Int16;
+  new (bax2.ax.a) char;       // { dg-warning "placement" "" { target default_packed } }
+  new (bax2.ax.a) char[2];    // { dg-warning "placement" "" { target default_packed } }
+  new (bax2.ax.a) char[3];    // { dg-warning "placement" "" { target default_packed } }
+  new (bax2.ax.a) Int16;      // { dg-warning "placement" "" { target default_packed } }
   new (bax2.ax.a) char[4];    // { dg-warning "placement" }
   new (bax2.ax.a) Int32;      // { dg-warning "placement" }
 }
@@ -42,10 +42,10 @@ void fBx3 ()
   static BAx bax2 = { 1, /* Ax = */ { 3, /* a[] = */ { 4, 5, 6 } } }; // { dg-error "initialization of flexible array member in a nested context" }
 
   // The first three bytes of the flexible array member live in the padding.
-  new (bax2.ax.a) char;
-  new (bax2.ax.a) char[2];
-  new (bax2.ax.a) Int16;
-  new (bax2.ax.a) char[3];
+  new (bax2.ax.a) char;       // { dg-warning "placement" "" { target default_packed } }
+  new (bax2.ax.a) char[2];    // { dg-warning "placement" "" { target default_packed } }
+  new (bax2.ax.a) Int16;      // { dg-warning "placement" "" { target default_packed } }
+  new (bax2.ax.a) char[3];    // { dg-warning "placement" "" { target default_packed } }
   new (bax2.ax.a) char[4];    // { dg-warning "placement" }
   new (bax2.ax.a) Int32;      // { dg-warning "placement" }
 }