mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 20:41:10 +08:00
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>
|
||||
|
||||
PR c++/17743
|
||||
|
@ -136,11 +136,12 @@ initialize_vtbl_ptrs (tree addr)
|
||||
/* Return an expression for the zero-initialization of an object with
|
||||
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
|
||||
aggregate). In either case, the value can be used as DECL_INITIAL
|
||||
for a decl of the indicated TYPE; it is a valid static initializer.
|
||||
If NELTS is non-NULL, and TYPE is an ARRAY_TYPE, NELTS is the
|
||||
number of elements in the array. If STATIC_STORAGE_P is TRUE,
|
||||
initializers are only generated for entities for which
|
||||
aggregate), or NULL (in the case that T does not require
|
||||
initialization). In either case, the value can be used as
|
||||
DECL_INITIAL for a decl of the indicated TYPE; it is a valid static
|
||||
initializer. If NELTS is non-NULL, and TYPE is an ARRAY_TYPE, NELTS
|
||||
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 bytes. */
|
||||
|
||||
@ -199,7 +200,8 @@ build_zero_init (tree type, tree nelts, bool static_storage_p)
|
||||
tree value = build_zero_init (TREE_TYPE (field),
|
||||
/*nelts=*/NULL_TREE,
|
||||
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. */
|
||||
|
@ -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>
|
||||
|
||||
* gnat.dg/slice2.ad[sb]: New testcase.
|
||||
|
11
gcc/testsuite/g++.dg/init/ref14.C
Normal file
11
gcc/testsuite/g++.dg/init/ref14.C
Normal file
@ -0,0 +1,11 @@
|
||||
// PR c++/33459
|
||||
|
||||
union A
|
||||
{
|
||||
int &i; // { dg-error "may not have reference type" }
|
||||
};
|
||||
|
||||
void foo()
|
||||
{
|
||||
A();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user