diff options
author | Jason Merrill <jason@redhat.com> | 2022-09-19 19:17:41 +0200 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2022-09-30 23:45:08 -0400 |
commit | f8cb417d6a4e2912d15a6d8bdffd1548cc649b49 (patch) | |
tree | 9f63b93d9c9745588c5db4217ffabfe863938256 /gcc | |
parent | aa360fbf68b11e54017e8fa5b1bdb87ce7c19188 (diff) | |
download | gcc-f8cb417d6a4e2912d15a6d8bdffd1548cc649b49.zip gcc-f8cb417d6a4e2912d15a6d8bdffd1548cc649b49.tar.gz gcc-f8cb417d6a4e2912d15a6d8bdffd1548cc649b49.tar.bz2 |
c++: cast split_nonconstant_init return val to void
We were already converting the result of expand_vec_init_expr to void; we
need to do the same for split_nonconstant_init.
The test that I noticed this with no longer fails without it.
gcc/cp/ChangeLog:
* cp-gimplify.cc (cp_genericize_init): Also convert the result of
split_nonconstant_init to void.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/cp-gimplify.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc index 7354888..cca3b9f 100644 --- a/gcc/cp/cp-gimplify.cc +++ b/gcc/cp/cp-gimplify.cc @@ -892,13 +892,9 @@ omp_cxx_notice_variable (struct cp_genericize_omp_taskreg *omp_ctx, tree decl) static void cp_genericize_init (tree *replace, tree from, tree to) { + tree init = NULL_TREE; if (TREE_CODE (from) == VEC_INIT_EXPR) - { - tree init = expand_vec_init_expr (to, from, tf_warning_or_error); - - /* Make cp_gimplify_init_expr call replace_decl. */ - *replace = fold_convert (void_type_node, init); - } + init = expand_vec_init_expr (to, from, tf_warning_or_error); else if (flag_exceptions && TREE_CODE (from) == CONSTRUCTOR && TREE_SIDE_EFFECTS (from) @@ -906,7 +902,16 @@ cp_genericize_init (tree *replace, tree from, tree to) { to = cp_stabilize_reference (to); replace_placeholders (from, to); - *replace = split_nonconstant_init (to, from); + init = split_nonconstant_init (to, from); + } + + if (init) + { + if (*replace == from) + /* Make cp_gimplify_init_expr call replace_decl on this + TARGET_EXPR_INITIAL. */ + init = fold_convert (void_type_node, init); + *replace = init; } } |