summaryrefslogtreecommitdiff
path: root/gcc/c-common.c
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-27 06:09:13 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-27 06:09:13 +0000
commit79b01846cc7d0244155eb6deb27fb56dea70c5ec (patch)
tree7ac7d3aa381cf7fc41ba0b018b9485b01b8d2a44 /gcc/c-common.c
parent1c39ab9d9b1ab08b333a01fa03c43c5344e27721 (diff)
downloadgcc-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.c15
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)
{