]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/cp/semantics.c
PR c++/23171, c++/23172, c++/25417.
authorMark Mitchell <mark@codesourcery.com>
Tue, 27 Dec 2005 06:09:13 +0000 (06:09 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 27 Dec 2005 06:09:13 +0000 (06:09 +0000)
commit3b2db49f369d82be920b0614b0edaef405efb8ae
tree7ac7d3aa381cf7fc41ba0b018b9485b01b8d2a44
parent103a4b39c223d6cded567dbc8aed82455a34aeac
PR c++/23171, c++/23172, c++/25417.

* c-decl.c (compound_literal_number): Remove.
(build_compound_literal): Use set_compound_literal_name.
* c-common.c (compound_literal_number): New variable.
(set_compound_literal_name): New function.
* c-common.h (set_compound_literal_name): Declare.

PR c++/23171, c++/23172, c++/25417.
* typeck.c (build_unary_op): Create temporary variables for
compound literals whose addresses are taken.
* init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
* decl.c (reshape_init_vector): Likewise.
(reshape_init): Give it external linkage.
(check_initializer): Use COMPOUND_LITERAL_P.
(initialize_artificial_var): Allow the initializer to be a
CONSTRUCTOR.
* call.c (make_temporary_var_for_ref_to_temp): Use
create_temporary_var.
* cp-tree.h (COMPOUND_LITERAL_P): New macro.
(rehape_init): Declare.
* typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
* semantics.c (finish_compound_literal): Use reshape_init.

PR c++/23172
* g++.dg/ext/complit4.C: New test.

PR c++/25417
* g++.dg/ext/complit5.C: Likewise.

From-SVN: r109075
15 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-common.h
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/init.c
gcc/cp/semantics.c
gcc/cp/typeck.c
gcc/cp/typeck2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/complit4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/complit5.C [new file with mode: 0644]