aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-04-11 15:44:23 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-04-11 15:44:23 -0700
commitca06cfe69f7f89314603d636b36adeadbb70b56a (patch)
treea01ada3c6afd82cc7fff3981f62928ada47eadea /gcc
parentd2d42a917c2a65769e78d4d430e47962b2d24ba5 (diff)
downloadgcc-ca06cfe69f7f89314603d636b36adeadbb70b56a.zip
gcc-ca06cfe69f7f89314603d636b36adeadbb70b56a.tar.gz
gcc-ca06cfe69f7f89314603d636b36adeadbb70b56a.tar.bz2
re PR c++/10202 ([IA64] ICE in int_mode_for_mode, at stor-layout.c)
PR c++/10202 * expr.c (expand_expr): Use COMPLETE_OR_UNBOUND_ARRAY_TYPE_P not COMPLETE_TYPE_P for re-invoking layout_decl. * g++.dg/expr/incomplete1.C: New. From-SVN: r65484
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/expr.c3
-rw-r--r--gcc/testsuite/g++.dg/expr/incomplete1.C14
3 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ae76043..f24de1b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-11 Richard Henderson <rth@redhat.com>
+
+ PR c++/10202
+ * expr.c (expand_expr): Use COMPLETE_OR_UNBOUND_ARRAY_TYPE_P
+ not COMPLETE_TYPE_P for re-invoking layout_decl.
+
2003-04-11 Simon Law <sfllaw@engmail.uwaterloo.ca>
* doc/bugreport.texi: Fix paragraph breaking between sections
diff --git a/gcc/expr.c b/gcc/expr.c
index caf35cd..ad8993d 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6712,7 +6712,8 @@ expand_expr (exp, target, tmode, modifier)
case VAR_DECL:
/* If a static var's type was incomplete when the decl was written,
but the type is complete now, lay out the decl now. */
- if (DECL_SIZE (exp) == 0 && COMPLETE_TYPE_P (TREE_TYPE (exp))
+ if (DECL_SIZE (exp) == 0
+ && COMPLETE_OR_UNBOUND_ARRAY_TYPE_P (TREE_TYPE (exp))
&& (TREE_STATIC (exp) || DECL_EXTERNAL (exp)))
layout_decl (exp, 0);
diff --git a/gcc/testsuite/g++.dg/expr/incomplete1.C b/gcc/testsuite/g++.dg/expr/incomplete1.C
new file mode 100644
index 0000000..03e363a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/expr/incomplete1.C
@@ -0,0 +1,14 @@
+// PR 10202
+// { dg-do compile }
+// { dg-options -O0 }
+
+extern struct _smtp_account smtp_accounts[];
+typedef struct _smtp_account {
+ int flags;
+} Smtp_Account;
+
+void get_smtp_host_info ()
+{
+ if (smtp_accounts[0].flags & 0x01)
+ get_smtp_host_info();
+}