diff options
author | Jason Merrill <jason@redhat.com> | 2016-06-24 17:48:14 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2016-06-24 17:48:14 -0400 |
commit | 6e085858a266dfeb0b335e8cd876872c633c2634 (patch) | |
tree | d9e9f14cb3947724e187a8e909256ad0ab693f18 /gcc/cp/tree.c | |
parent | 65e009bb74ece005a46393a8dd54080275604aef (diff) | |
download | gcc-6e085858a266dfeb0b335e8cd876872c633c2634.zip gcc-6e085858a266dfeb0b335e8cd876872c633c2634.tar.gz gcc-6e085858a266dfeb0b335e8cd876872c633c2634.tar.bz2 |
Fix get_target_expr for bit-field expressions.
* tree.c (get_target_expr_sfinae): Handle bit-fields.
(build_target_expr): Call mark_rvalue_use.
From-SVN: r237773
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 6010f63..fa8db0a 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -377,6 +377,8 @@ build_target_expr (tree decl, tree value, tsubst_flags_t complain) tree t; tree type = TREE_TYPE (decl); + value = mark_rvalue_use (value); + gcc_checking_assert (VOID_TYPE_P (TREE_TYPE (value)) || TREE_TYPE (decl) == TREE_TYPE (value) /* On ARM ctors return 'this'. */ @@ -729,7 +731,10 @@ get_target_expr_sfinae (tree init, tsubst_flags_t complain) else if (TREE_CODE (init) == VEC_INIT_EXPR) return build_target_expr (VEC_INIT_EXPR_SLOT (init), init, complain); else - return build_target_expr_with_type (init, TREE_TYPE (init), complain); + { + init = convert_bitfield_to_declared_type (init); + return build_target_expr_with_type (init, TREE_TYPE (init), complain); + } } tree |