aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-06-29 10:34:22 -0400
committerJason Merrill <jason@gcc.gnu.org>2011-06-29 10:34:22 -0400
commit1f2911476d723f30c53dd175589b2b561e36c439 (patch)
tree6c6ca2d903e9336dfcbe36e9d0b7d216bb748f01 /gcc
parentdfedbe40550d1d5302ff20cf21d9ae5cc89921d5 (diff)
downloadgcc-1f2911476d723f30c53dd175589b2b561e36c439.zip
gcc-1f2911476d723f30c53dd175589b2b561e36c439.tar.gz
gcc-1f2911476d723f30c53dd175589b2b561e36c439.tar.bz2
tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
* tree.c (build_vec_init_expr): Don't add TARGET_EXPR. * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR. * semantics.c (cxx_eval_vec_init_1): Correct type. From-SVN: r175643
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/cp/tree.c3
-rw-r--r--gcc/cp/typeck2.c2
4 files changed, 6 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2f7b215..e25f4e0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2011-06-29 Jason Merrill <jason@redhat.com>
+ * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
+ * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
+ * semantics.c (cxx_eval_vec_init_1): Correct type.
+
* init.c (build_value_init): Decide whether or not to zero-initialize
based on user-providedness of default ctor, not any ctor.
(build_value_init_noctor): Adjust assert.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index d1af0c6..8121a00 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -6646,7 +6646,7 @@ cxx_eval_vec_init_1 (const constexpr_call *call, tree atype, tree init,
if (!*non_constant_p)
{
- init = build_constructor (TREE_TYPE (atype), n);
+ init = build_constructor (atype, n);
TREE_CONSTANT (init) = true;
return init;
}
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 3100508..c50751f 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -541,9 +541,6 @@ build_vec_init_expr (tree type, tree init, tsubst_flags_t complain)
VEC_INIT_EXPR_IS_CONSTEXPR (init) = true;
VEC_INIT_EXPR_VALUE_INIT (init) = value_init;
- init = build_target_expr (slot, init, complain);
- TARGET_EXPR_IMPLICIT_P (init) = 1;
-
return init;
}
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 8bb938e..023fab3 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -925,7 +925,7 @@ digest_init_r (tree type, tree init, bool nested, int flags,
{
/* Allow the result of build_array_copy and of
build_value_init_noctor. */
- if ((TREE_CODE (init) == TARGET_EXPR
+ if ((TREE_CODE (init) == VEC_INIT_EXPR
|| TREE_CODE (init) == CONSTRUCTOR)
&& (same_type_ignoring_top_level_qualifiers_p
(type, TREE_TYPE (init))))