aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@issan.cs.uni-dortmund.de>1999-05-17 01:18:59 +0000
committerJeff Law <law@gcc.gnu.org>1999-05-16 19:18:59 -0600
commit92b3fc3ae3f552257a01f1af53963bdf82d87bc3 (patch)
tree03cdfd481d803e1b442da212fdc32a4b216c7ec9 /gcc
parent924e00ffb8f3758a6b4f815e4dc9b61e7619f0ce (diff)
downloadgcc-92b3fc3ae3f552257a01f1af53963bdf82d87bc3.zip
gcc-92b3fc3ae3f552257a01f1af53963bdf82d87bc3.tar.gz
gcc-92b3fc3ae3f552257a01f1af53963bdf82d87bc3.tar.bz2
990326-1.c: Force bitfields to be aligned.
* execute/990326-1.c: Force bitfields to be aligned. (e4, f4): New tests. (main): Call them. From-SVN: r26961
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/990326-1.c41
2 files changed, 34 insertions, 13 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e4038c1..ff2e800 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+1999-05-17 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * execute/990326-1.c: Force bitfields to be aligned.
+ (e4, f4): New tests.
+ (main): Call them.
+
1999-05-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.dg/noreturn-1.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/execute/990326-1.c b/gcc/testsuite/gcc.c-torture/execute/990326-1.c
index 1b8e5d8..d7427cf 100644
--- a/gcc/testsuite/gcc.c-torture/execute/990326-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/990326-1.c
@@ -58,7 +58,7 @@ b3()
struct c {
unsigned int c:4, b:14, a:14;
-};
+} __attribute__ ((aligned));
int
c1()
@@ -86,7 +86,7 @@ c3()
struct d {
unsigned int a:14, b:14, c:4;
-};
+} __attribute__ ((aligned));
int
d1()
@@ -114,7 +114,7 @@ d3()
struct e {
int c:4, b:14, a:14;
-};
+} __attribute__ ((aligned));
int
e1()
@@ -140,9 +140,17 @@ e3()
return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
}
+int
+e4()
+{
+ static struct e x = { -1, -1, 0 };
+
+ return x.a == 0 && x.b & 0x2000;
+}
+
struct f {
int a:14, b:14, c:4;
-};
+} __attribute__ ((aligned));
int
f1()
@@ -168,12 +176,20 @@ f3()
return ((x.a & ~8) == (y.a & ~32) && (x.b & ~64) == (y.b & ~16));
}
+int
+f4()
+{
+ static struct f x = { 0, -1, -1 };
+
+ return x.a == 0 && x.b & 0x2000;
+}
+
struct gx {
int c:4, b:14, a:14;
-};
+} __attribute__ ((aligned));
struct gy {
int b:14, a:14, c:4;
-};
+} __attribute__ ((aligned));
int
g1()
@@ -244,10 +260,10 @@ g7()
struct hx {
int a:14, b:14, c:4;
-};
+} __attribute__ ((aligned));
struct hy {
int c:4, a:14, b:14;
-};
+} __attribute__ ((aligned));
int
h1()
@@ -316,11 +332,6 @@ h7()
(x.b & 0x3ff0) == (y.b & 0x03ff));
}
-struct foo {
- int junk; /* this is to force alignment */
- unsigned char w, x, y, z;
-};
-
int
main()
{
@@ -354,12 +365,16 @@ main()
abort ();
if (!e3 ())
abort ();
+ if (!e4 ())
+ abort ();
if (!f1 ())
abort ();
if (!f2 ())
abort ();
if (!f3 ())
abort ();
+ if (!f4 ())
+ abort ();
if (!g1 ())
abort ();
if (!g2 ())