aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2025-01-10 09:32:27 -0300
committerAlexandre Oliva <oliva@gnu.org>2025-01-10 09:40:39 -0300
commitd3c91b0439f67a6dc20ebb3bee4eeaf436eb7190 (patch)
treed8e500af5a7c06d599a2260cb928b0755f2d03da /gcc
parent261ffe685f3865ea61599d61d6b32b92e476a342 (diff)
downloadgcc-d3c91b0439f67a6dc20ebb3bee4eeaf436eb7190.zip
gcc-d3c91b0439f67a6dc20ebb3bee4eeaf436eb7190.tar.gz
gcc-d3c91b0439f67a6dc20ebb3bee4eeaf436eb7190.tar.bz2
testsuite: generalized field-merge tests for <32-bit int [PR118025]
Explicitly convert constants to the desired types, so as to not elicit warnings about implicit truncations, nor execution errors, on targets whose ints are narrower than 32 bits. for gcc/testsuite/ChangeLog PR testsuite/118025 * gcc.dg/field-merge-1.c: Convert constants to desired types. * gcc.dg/field-merge-3.c: Likewise. * gcc.dg/field-merge-4.c: Likewise. * gcc.dg/field-merge-5.c: Likewise. * gcc.dg/field-merge-11.c: Likewise. * gcc.dg/field-merge-17.c: Don't mess with padding bits.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.dg/field-merge-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/field-merge-11.c10
-rw-r--r--gcc/testsuite/gcc.dg/field-merge-17.c4
-rw-r--r--gcc/testsuite/gcc.dg/field-merge-3.c4
-rw-r--r--gcc/testsuite/gcc.dg/field-merge-4.c6
-rw-r--r--gcc/testsuite/gcc.dg/field-merge-5.c6
6 files changed, 20 insertions, 14 deletions
diff --git a/gcc/testsuite/gcc.dg/field-merge-1.c b/gcc/testsuite/gcc.dg/field-merge-1.c
index 4405d40..4e7f6ae 100644
--- a/gcc/testsuite/gcc.dg/field-merge-1.c
+++ b/gcc/testsuite/gcc.dg/field-merge-1.c
@@ -25,8 +25,8 @@ struct TB {
unsigned char s;
} __attribute__ ((packed, aligned (4), scalar_storage_order ("big-endian")));
-#define vc 0xaa
-#define vi 0x12345678
+#define vc (unsigned char)0xaa
+#define vi (unsigned int)0x12345678
struct TL vL = { vc, vi, vc, vi, vc, vi, vc };
struct TB vB = { vc, vi, vc, vi, vc, vi, vc };
diff --git a/gcc/testsuite/gcc.dg/field-merge-11.c b/gcc/testsuite/gcc.dg/field-merge-11.c
index fe627cd..9e606e3 100644
--- a/gcc/testsuite/gcc.dg/field-merge-11.c
+++ b/gcc/testsuite/gcc.dg/field-merge-11.c
@@ -10,7 +10,11 @@ struct s {
int c;
} __attribute__ ((aligned (4)));
-struct s p = { 42, (short)(0xef1 - 0x1000), 0x12345678 };
+struct s p = {
+ (short)(unsigned short)42,
+ (short)(unsigned short)(0xef1 - 0x1000),
+ (int)(unsigned int)0x12345678
+};
void f (void) {
if (0
@@ -19,9 +23,9 @@ void f (void) {
|| (int)(signed char)p.b != (int)(signed char)(0xef1 - 0x1000)
|| (unsigned)(unsigned char)p.b != (unsigned)(unsigned char)(0xef1 - 0x1000)
|| (unsigned)p.b != (unsigned short)(0xef1 - 0x1000)
- || (int)(short)p.b != (int)(0xef1 - 0x1000)
+ || (int)(short)p.b != (int)(short)(unsigned short)(0xef1 - 0x1000)
|| (long)(unsigned char)(p.c >> 8) != (long)(unsigned char)0x123456
- || p.c != 0x12345678
+ || p.c != (int)(unsigned int)0x12345678
)
__builtin_abort ();
}
diff --git a/gcc/testsuite/gcc.dg/field-merge-17.c b/gcc/testsuite/gcc.dg/field-merge-17.c
index a42658a..35ead95 100644
--- a/gcc/testsuite/gcc.dg/field-merge-17.c
+++ b/gcc/testsuite/gcc.dg/field-merge-17.c
@@ -3,6 +3,8 @@
/* Check that we can optimize misaligned double-words. */
+#include <stddef.h>
+
struct s {
short a;
long long b;
@@ -33,7 +35,7 @@ int main () {
if (fp () > 0)
__builtin_abort ();
unsigned char *pc = (unsigned char *)&p;
- for (int i = 0; i < sizeof (p); i++)
+ for (int i = 0; i < offsetof (struct s, e) + sizeof (p.e); i++)
{
pc[i] = 1;
if (fp () < 0)
diff --git a/gcc/testsuite/gcc.dg/field-merge-3.c b/gcc/testsuite/gcc.dg/field-merge-3.c
index a9fe404..e9af491 100644
--- a/gcc/testsuite/gcc.dg/field-merge-3.c
+++ b/gcc/testsuite/gcc.dg/field-merge-3.c
@@ -15,8 +15,8 @@ struct T2 {
unsigned int z;
} __attribute__((__aligned__(8)));
-#define vc 0xaa
-#define vi 0x12345678
+#define vc (unsigned char)0xaa
+#define vi (unsigned int)0x12345678
struct T1 v1 = { { vc + !BIG_ENDIAN_P, vc + BIG_ENDIAN_P }, vc, vi };
struct T2 v2 = { (vc << 8) | (vc - 1), vc, vi };
diff --git a/gcc/testsuite/gcc.dg/field-merge-4.c b/gcc/testsuite/gcc.dg/field-merge-4.c
index c629069..7c63123 100644
--- a/gcc/testsuite/gcc.dg/field-merge-4.c
+++ b/gcc/testsuite/gcc.dg/field-merge-4.c
@@ -18,9 +18,9 @@ struct T2 {
unsigned int z;
} __attribute__((__packed__, __aligned__(4)));
-#define vc 0xaa
-#define vs 0xccdd
-#define vi 0x12345678
+#define vc (unsigned char)0xaa
+#define vs (unsigned short)0xccdd
+#define vi (unsigned int)0x12345678
struct T1 v1 = { -1, vc, 1, vs, vi };
struct T2 v2 = { -1, 0, vc, 1, vs, vi };
diff --git a/gcc/testsuite/gcc.dg/field-merge-5.c b/gcc/testsuite/gcc.dg/field-merge-5.c
index 1580b14bc..1b5d1a8 100644
--- a/gcc/testsuite/gcc.dg/field-merge-5.c
+++ b/gcc/testsuite/gcc.dg/field-merge-5.c
@@ -18,9 +18,9 @@ struct T2 {
unsigned int z;
} __attribute__((__packed__, __aligned__(8)));
-#define vc 0xaa
-#define vs 0xccdd
-#define vi 0x12345678
+#define vc (unsigned char)0xaa
+#define vs (unsigned short)0xccdd
+#define vi (unsigned int)0x12345678
struct T1 v1 = { -1, vc, 1, vs, vi };
struct T2 v2 = { -1, 0, vc, 1, vs, vi };