diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2017-10-08 21:13:52 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2017-10-08 21:13:52 +0000 |
commit | 561593c104a3fcce354d644b12072b1da8690baa (patch) | |
tree | 149b1fac42bf695760c221ab62b82c4d671b93af /gcc/tree-outof-ssa.h | |
parent | caeaa0b3c63bc2634f7ae8f684224b2773c782c1 (diff) | |
download | gcc-561593c104a3fcce354d644b12072b1da8690baa.zip gcc-561593c104a3fcce354d644b12072b1da8690baa.tar.gz gcc-561593c104a3fcce354d644b12072b1da8690baa.tar.bz2 |
tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
* tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
(always_initialized_rtx_for_ssa_name_p): New predicate.
* tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
(finish_out_of_ssa): Free new field of SA.
* tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
* tree-ssa-coalesce.c: Include tree-ssa.h.
(get_parm_default_def_partitions): Remove extern keyword.
(get_undefined_value_partitions): New function.
* expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
uninitialized bits.
* loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
From-SVN: r253530
Diffstat (limited to 'gcc/tree-outof-ssa.h')
-rw-r--r-- | gcc/tree-outof-ssa.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/tree-outof-ssa.h b/gcc/tree-outof-ssa.h index e751a26..1220b62 100644 --- a/gcc/tree-outof-ssa.h +++ b/gcc/tree-outof-ssa.h @@ -42,6 +42,10 @@ struct ssaexpand /* If partition I contains an SSA name that has a default def for a parameter, bit I will be set in this bitmap. */ bitmap partitions_for_parm_default_defs; + + /* If partition I contains an SSA name that has an undefined value, + bit I will be set in this bitmap. */ + bitmap partitions_for_undefined_values; }; /* This is the singleton described above. */ @@ -70,6 +74,18 @@ get_gimple_for_ssa_name (tree exp) return NULL; } +/* Return whether the RTX expression representing the storage of the outof-SSA + partition that the SSA name EXP is a member of is always initialized. */ +static inline bool +always_initialized_rtx_for_ssa_name_p (tree exp) +{ + int p = partition_find (SA.map->var_partition, SSA_NAME_VERSION (exp)); + if (SA.map->partition_to_view) + p = SA.map->partition_to_view[p]; + gcc_assert (p != NO_PARTITION); + return !bitmap_bit_p (SA.partitions_for_undefined_values, p); +} + extern bool ssa_is_replaceable_p (gimple *stmt); extern void finish_out_of_ssa (struct ssaexpand *sa); extern unsigned int rewrite_out_of_ssa (struct ssaexpand *sa); |