diff options
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 994056d9ca3..c80fa995634 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2954,7 +2954,8 @@ stabilize_expr (tree exp, tree* initp) if (!TREE_SIDE_EFFECTS (exp)) init_expr = NULL_TREE; else if (!real_lvalue_p (exp) - || !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp))) + || (!TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp)) + && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (exp)))) { init_expr = get_target_expr (exp); exp = TARGET_EXPR_SLOT (init_expr); |