aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-decl.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20001109-1.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20001109-2.c6
5 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3db1d11..03d1ac6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-11-09 Geoffrey Keating <geoffk@redhat.com>
+
+ * c-decl.c (finish_struct): When a structure is completed,
+ check all its variant types for completeness.
+
2000-11-09 Neil Booth <neilb@earthling.net>
* cpphash.c: Move cpp_defined here from cpplib.c.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 2bbfd46..c1093ce 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -5573,7 +5573,7 @@ finish_struct (t, fieldlist, attributes)
tree decl;
for (decl = current_binding_level->names; decl; decl = TREE_CHAIN (decl))
{
- if (TREE_TYPE (decl) == t
+ if (TYPE_MAIN_VARIANT (TREE_TYPE (decl)) == TYPE_MAIN_VARIANT (t)
&& TREE_CODE (decl) != TYPE_DECL)
{
layout_decl (decl, 0);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2180234..4a45c4f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2000-11-09 Geoffrey Keating <geoffk@redhat.com>
+
+ * gcc.c-torture/compile/20001109-1.c: New test.
+ * gcc.c-torture/compile/20001109-2.c: New test.
+
2000-11-09 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.pt/operator1.C: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20001109-1.c b/gcc/testsuite/gcc.c-torture/compile/20001109-1.c
new file mode 100644
index 0000000..cce8047
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20001109-1.c
@@ -0,0 +1,7 @@
+typedef struct _foo foo;
+extern foo bar;
+struct _foo {
+ int a;
+};
+
+int tst[__alignof__ (bar) >= __alignof__ (int) ? 1 : -1];
diff --git a/gcc/testsuite/gcc.c-torture/compile/20001109-2.c b/gcc/testsuite/gcc.c-torture/compile/20001109-2.c
new file mode 100644
index 0000000..a23e56b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20001109-2.c
@@ -0,0 +1,6 @@
+extern struct foo bar;
+struct foo {
+ int a;
+};
+
+int tst[__alignof__ (bar) >= __alignof__ (int) ? 1 : -1];