diff options
author | Martin Liska <mliska@suse.cz> | 2022-08-18 15:35:14 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-08-18 15:35:14 +0200 |
commit | c4cf402822be5b52516a727e6b2abc923d1a9d52 (patch) | |
tree | d97b4c3407d27282cc3bcfda5a0052d37a325580 /gcc/gimple-range-fold.cc | |
parent | 87e8197e4012801477e3743601d6d6ead64e851c (diff) | |
parent | 03119249b9cfedb48e910b8df6a832b206cced2b (diff) | |
download | gcc-c4cf402822be5b52516a727e6b2abc923d1a9d52.zip gcc-c4cf402822be5b52516a727e6b2abc923d1a9d52.tar.gz gcc-c4cf402822be5b52516a727e6b2abc923d1a9d52.tar.bz2 |
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc/gimple-range-fold.cc')
-rw-r--r-- | gcc/gimple-range-fold.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc index 689d827..b0b2210 100644 --- a/gcc/gimple-range-fold.cc +++ b/gcc/gimple-range-fold.cc @@ -1580,3 +1580,36 @@ fur_source::register_outgoing_edges (gcond *s, irange &lhs_range, edge e0, edge } } } + +// Given stmt S, fill VEC, up to VEC_SIZE elements, with relevant ssa-names +// on the statement. For efficiency, it is an error to not pass in enough +// elements for the vector. Return the number of ssa-names. + +unsigned +gimple_range_ssa_names (tree *vec, unsigned vec_size, gimple *stmt) +{ + tree ssa; + int count = 0; + + if (range_op_handler (stmt)) + { + gcc_checking_assert (vec_size >= 2); + if ((ssa = gimple_range_ssa_p (gimple_range_operand1 (stmt)))) + vec[count++] = ssa; + if ((ssa = gimple_range_ssa_p (gimple_range_operand2 (stmt)))) + vec[count++] = ssa; + } + else if (is_a<gassign *> (stmt) + && gimple_assign_rhs_code (stmt) == COND_EXPR) + { + gcc_checking_assert (vec_size >= 3); + gassign *st = as_a<gassign *> (stmt); + if ((ssa = gimple_range_ssa_p (gimple_assign_rhs1 (st)))) + vec[count++] = ssa; + if ((ssa = gimple_range_ssa_p (gimple_assign_rhs2 (st)))) + vec[count++] = ssa; + if ((ssa = gimple_range_ssa_p (gimple_assign_rhs3 (st)))) + vec[count++] = ssa; + } + return count; +} |