Add relational support to fold_using_range
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 17 Jun 2021 18:09:48 +0000 (14:09 -0400)
committerAndrew MacLeod <amacleod@redhat.com>
Tue, 22 Jun 2021 12:11:45 +0000 (08:11 -0400)
commita2c9173331914eff3d728c07afaeee71892689ba
tree8912aa396388e124d9f9f769da0ae9e91f0d5d51
parent80dd13f5c3bdc7899ee6e863e05b254815ec0cef
Add relational support to fold_using_range

Enable a relation oracle in ranger, and add full range-op relation support
to fold_using_range.

* gimple-range-cache.cc (ranger_cache::ranger_cache): Create a
relation_oracle if dominators exist.
(ranger_cache::~ranger_cache): Dispose of oracle.
(ranger_cache::dump_bb): Dump oracle.
* gimple-range.cc (fur_source::fur_source): New.
(fur_source::get_operand): Use mmeber query.
(fur_source::get_phi_operand): Use member_query.
(fur_source::query_relation): New.
(fur_source::register_dependency): Delete.
(fur_source::register_relation): New.
(fur_edge::fur_edge): Adjust.
(fur_edge::get_phi_operand): Fix comment.
(fur_edge::query): Delete.
(fur_stmt::fur_stmt): Adjust.
(fur_stmt::query): Delete.
(fur_depend::fur_depend): Adjust.
(fur_depend::register_relation): New.
(fur_depend::register_relation): New.
(fur_list::fur_list): Adjust.
(fur_list::get_operand): Use member query.
(fold_using_range::range_of_range_op): Process and query relations.
(fold_using_range::range_of_address): Adjust dependency call.
(fold_using_range::range_of_phi): Ditto.
(gimple_ranger::gimple_ranger): New.  Use ranger_ache oracle.
(fold_using_range::relation_fold_and_or): New.
(fold_using_range::postfold_gcond_edges): New.
* gimple-range.h (class gimple_ranger): Adjust.
(class fur_source): Adjust members.
(class fur_stmt): Ditto.
(class fold_using_range): Ditto.
gcc/gimple-range-cache.cc
gcc/gimple-range.cc
gcc/gimple-range.h