diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-27 06:09:13 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-27 06:09:13 +0000 |
commit | 79b01846cc7d0244155eb6deb27fb56dea70c5ec (patch) | |
tree | 7ac7d3aa381cf7fc41ba0b018b9485b01b8d2a44 /gcc/c-common.c | |
parent | 1c39ab9d9b1ab08b333a01fa03c43c5344e27721 (diff) | |
download | gcc-79b01846cc7d0244155eb6deb27fb56dea70c5ec.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109075 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index e50b7fef697..b2523459458 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -3359,6 +3359,21 @@ set_builtin_user_assembler_name (tree decl, const char *asmspec) init_block_clear_fn (asmspec); } +/* The number of named compound-literals generated thus far. */ +static GTY(()) int compound_literal_number; + +/* Set DECL_NAME for DECL, a VAR_DECL for a compound-literal. */ + +void +set_compound_literal_name (tree decl) +{ + char *name; + ASM_FORMAT_PRIVATE_NAME (name, "__compound_literal", + compound_literal_number); + compound_literal_number++; + DECL_NAME (decl) = get_identifier (name); +} + tree build_va_arg (tree expr, tree type) { |