diff options
author | Richard Biener <rguenther@suse.de> | 2023-04-21 11:40:23 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-04-21 13:25:39 +0200 |
commit | 94a04c24c33580179e51d3218f2edd2cf88cadcd (patch) | |
tree | 38874ebf9677bd2c476124969375a439f4093e65 /gcc/df.h | |
parent | d06e9264b0192c2c77e07d7fb0fe090efcb510c0 (diff) | |
download | gcc-94a04c24c33580179e51d3218f2edd2cf88cadcd.zip gcc-94a04c24c33580179e51d3218f2edd2cf88cadcd.tar.gz gcc-94a04c24c33580179e51d3218f2edd2cf88cadcd.tar.bz2 |
change DF to use the proper CFG order for DF_FORWARD problems
This changes DF to use RPO on the forward graph for DF_FORWARD
problems. While that naturally maps to pre_and_rev_postorder_compute
we use the existing (wrong) CFG order for DF_BACKWARD problems
computed by post_order_compute since that provides the required
side-effect of deleting unreachable blocks.
The change requires turning the inconsistent vec<int> vs int * back
to consistent int *. A followup patch will change the
inverted_post_order_compute API and change the DF_BACKWARD problem
to use the correct RPO on the backward graph together with statistics
I produced last year for the combined effect.
* df.h (df_d::postorder_inverted): Change back to int *,
clarify comments.
* df-core.cc (rest_of_handle_df_finish): Adjust.
(df_analyze_1): Likewise.
(df_analyze): For DF_FORWARD problems use RPO on the forward
graph. Adjust.
(loop_inverted_post_order_compute): Adjust API.
(df_analyze_loop): Adjust.
(df_get_n_blocks): Likewise.
(df_get_postorder): Likewise.
Diffstat (limited to 'gcc/df.h')
-rw-r--r-- | gcc/df.h | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -581,10 +581,10 @@ public: bitmap_head insns_to_delete; bitmap_head insns_to_rescan; bitmap_head insns_to_notes_rescan; - int *postorder; /* The current set of basic blocks - in reverse postorder. */ - vec<int> postorder_inverted; /* The current set of basic blocks - in reverse postorder of inverted CFG. */ + int *postorder; /* The current set of basic blocks in reverse + postorder for DF_BACKWARD problems. */ + int *postorder_inverted; /* The current set of basic blocks in reverse + postorder for DF_FORWARD problems. */ int n_blocks; /* The number of blocks in reverse postorder. */ /* An array [FIRST_PSEUDO_REGISTER], indexed by regno, of the number |