aboutsummaryrefslogtreecommitdiff
path: root/gcc/df.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-04-21 11:40:23 +0200
committerRichard Biener <rguenther@suse.de>2023-04-21 13:25:39 +0200
commit94a04c24c33580179e51d3218f2edd2cf88cadcd (patch)
tree38874ebf9677bd2c476124969375a439f4093e65 /gcc/df.h
parentd06e9264b0192c2c77e07d7fb0fe090efcb510c0 (diff)
downloadgcc-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.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/df.h b/gcc/df.h
index aec2223..402657a 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -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