aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-06-19 09:37:31 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2018-06-19 09:37:31 +0000
commit7f1387e0f270d42df03d33c41e4bdac8d1491cdb (patch)
tree1f46312b8e923a7024e84666bfd854958a12ff81 /gcc/gimplify.c
parent1724941ee14304057f04b52d9c82acb4e3dd1604 (diff)
downloadgcc-7f1387e0f270d42df03d33c41e4bdac8d1491cdb.zip
gcc-7f1387e0f270d42df03d33c41e4bdac8d1491cdb.tar.gz
gcc-7f1387e0f270d42df03d33c41e4bdac8d1491cdb.tar.bz2
gimplify.c (gimplify_init_constructor): Really never clear for an incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
* gimplify.c (gimplify_init_constructor): Really never clear for an incomplete constructor if CONSTRUCTOR_NO_CLEARING is set. From-SVN: r261735
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 4bcdf44..1523a27 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4795,7 +4795,7 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
objects. Initializers for such objects must explicitly set
every field that needs to be set. */
cleared = false;
- else if (!complete_p && !CONSTRUCTOR_NO_CLEARING (ctor))
+ else if (!complete_p)
/* If the constructor isn't complete, clear the whole object
beforehand, unless CONSTRUCTOR_NO_CLEARING is set on it.
@@ -4804,7 +4804,7 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
we'd need to *find* the elements that are not present, and that
requires trickery to avoid quadratic compile-time behavior in
large cases or excessive memory use in small cases. */
- cleared = true;
+ cleared = !CONSTRUCTOR_NO_CLEARING (ctor);
else if (num_ctor_elements - num_nonzero_elements
> CLEAR_RATIO (optimize_function_for_speed_p (cfun))
&& num_nonzero_elements < num_ctor_elements / 4)