aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@phydeaux.cygnus.com>1995-05-17 23:34:39 +0000
committerMike Stump <mrs@gcc.gnu.org>1995-05-17 23:34:39 +0000
commitc19a80671bf41d73c9f35212b845d8c55681c903 (patch)
treefcc2cbf51827e2dec951daa530d1e943b71c0612
parent01e7bd9ad266390ee411603018a015a4cd2a0d4c (diff)
downloadgcc-c19a80671bf41d73c9f35212b845d8c55681c903.zip
gcc-c19a80671bf41d73c9f35212b845d8c55681c903.tar.gz
gcc-c19a80671bf41d73c9f35212b845d8c55681c903.tar.bz2
72nd Cygnus<->FSF merge
From-SVN: r9737
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/class.c3
-rw-r--r--gcc/cp/expr.c1
3 files changed, 13 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b40acc3..e8bc6e2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+Wed May 17 01:43:58 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * class.c (finish_struct): Don't complain about a class with no
+ user-defined constructors but with a member that has no default
+ constructor, as this is OK for aggregates.
+
+ * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit
+ constructor call, mark slot addressable.
+
Tue May 16 18:37:51 1995 Douglas Rupp (drupp@cs.washington.edu)
* g++.c: Changed WINNT to _WIN32.
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 7463058..a1a1fa8 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -3287,6 +3287,8 @@ finish_struct (t, list_of_fieldlists, warn_anon)
&& ! TYPE_HAS_DEFAULT_CONSTRUCTOR (type))
{
cant_have_default_ctor = 1;
+#if 0
+ /* This is wrong for aggregates. */
if (! TYPE_HAS_CONSTRUCTOR (t))
{
if (DECL_NAME (x))
@@ -3296,6 +3298,7 @@ finish_struct (t, list_of_fieldlists, warn_anon)
cp_pedwarn_at ("in class without a constructor",
x);
}
+#endif
}
}
if (DECL_INITIAL (x) != NULL_TREE)
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c
index c722dcb..27da793 100644
--- a/gcc/cp/expr.c
+++ b/gcc/cp/expr.c
@@ -107,6 +107,7 @@ cplus_expand_expr (exp, target, tmode, modifier)
type = TYPE_POINTER_TO (type);
/* Don't clobber a value that might be part of a default
parameter value. */
+ mark_addressable (slot);
if (TREE_PERMANENT (args))
args = tree_cons (0, build1 (ADDR_EXPR, type, slot),
TREE_CHAIN (args));