mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/33459 (ICE on reference member in union)
cp/ 2007-09-20 Paolo Carlini <pcarlini@suse.de> PR c++/33459 * init.c (build_zero_init): If, recursively, build_zero_init returns a NULL_TREE, do not append it to the VEC of constructors. testsuite/ 2007-09-20 Paolo Carlini <pcarlini@suse.de> PR c++/33459 * g++.dg/init/ref14.C: New. From-SVN: r128615
This commit is contained in:
parent
c6f3019a9a
commit
b43d1bdea5
|
|
@ -1,3 +1,9 @@
|
||||||
|
2007-09-20 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
|
PR c++/33459
|
||||||
|
* init.c (build_zero_init): If, recursively, build_zero_init
|
||||||
|
returns a NULL_TREE, do not append it to the VEC of constructors.
|
||||||
|
|
||||||
2007-09-18 Jason Merrill <jason@redhat.com>
|
2007-09-18 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/17743
|
PR c++/17743
|
||||||
|
|
|
||||||
|
|
@ -136,11 +136,12 @@ initialize_vtbl_ptrs (tree addr)
|
||||||
/* Return an expression for the zero-initialization of an object with
|
/* Return an expression for the zero-initialization of an object with
|
||||||
type T. This expression will either be a constant (in the case
|
type T. This expression will either be a constant (in the case
|
||||||
that T is a scalar), or a CONSTRUCTOR (in the case that T is an
|
that T is a scalar), or a CONSTRUCTOR (in the case that T is an
|
||||||
aggregate). In either case, the value can be used as DECL_INITIAL
|
aggregate), or NULL (in the case that T does not require
|
||||||
for a decl of the indicated TYPE; it is a valid static initializer.
|
initialization). In either case, the value can be used as
|
||||||
If NELTS is non-NULL, and TYPE is an ARRAY_TYPE, NELTS is the
|
DECL_INITIAL for a decl of the indicated TYPE; it is a valid static
|
||||||
number of elements in the array. If STATIC_STORAGE_P is TRUE,
|
initializer. If NELTS is non-NULL, and TYPE is an ARRAY_TYPE, NELTS
|
||||||
initializers are only generated for entities for which
|
is the number of elements in the array. If STATIC_STORAGE_P is
|
||||||
|
TRUE, initializers are only generated for entities for which
|
||||||
zero-initialization does not simply mean filling the storage with
|
zero-initialization does not simply mean filling the storage with
|
||||||
zero bytes. */
|
zero bytes. */
|
||||||
|
|
||||||
|
|
@ -199,7 +200,8 @@ build_zero_init (tree type, tree nelts, bool static_storage_p)
|
||||||
tree value = build_zero_init (TREE_TYPE (field),
|
tree value = build_zero_init (TREE_TYPE (field),
|
||||||
/*nelts=*/NULL_TREE,
|
/*nelts=*/NULL_TREE,
|
||||||
static_storage_p);
|
static_storage_p);
|
||||||
CONSTRUCTOR_APPEND_ELT(v, field, value);
|
if (value)
|
||||||
|
CONSTRUCTOR_APPEND_ELT(v, field, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For unions, only the first field is initialized. */
|
/* For unions, only the first field is initialized. */
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2007-09-20 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
|
PR c++/33459
|
||||||
|
* g++.dg/init/ref14.C: New.
|
||||||
|
|
||||||
2007-09-19 Eric Botcazou <ebotcazou@adacore.com>
|
2007-09-19 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
* gnat.dg/slice2.ad[sb]: New testcase.
|
* gnat.dg/slice2.ad[sb]: New testcase.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
// PR c++/33459
|
||||||
|
|
||||||
|
union A
|
||||||
|
{
|
||||||
|
int &i; // { dg-error "may not have reference type" }
|
||||||
|
};
|
||||||
|
|
||||||
|
void foo()
|
||||||
|
{
|
||||||
|
A();
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue