diff options
author | Richard Biener <rguenther@suse.de> | 2020-01-14 14:14:54 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-05-12 12:28:24 +0200 |
commit | 5e3c2d4b238f10e6e6db36810469483334d4bcb0 (patch) | |
tree | 60066599b22ad78796d99c71b7d870acbe8bb4f7 | |
parent | 6b41920bd5c68998a53de749b4fe5c0b8875db6c (diff) | |
download | gcc-5e3c2d4b238f10e6e6db36810469483334d4bcb0.zip gcc-5e3c2d4b238f10e6e6db36810469483334d4bcb0.tar.gz gcc-5e3c2d4b238f10e6e6db36810469483334d4bcb0.tar.bz2 |
preserve EDGE_DFS_BACK across split_edge
This moves EDGE_DFS_BACK to the appropriate edge when the split
edge had it set.
2020-05-12 Richard Biener <rguenther@suse.de>
* cfghooks.c (split_edge): Preserve EDGE_DFS_BACK if set.
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cfghooks.c | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 72b56ad..b0a9212 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2020-05-12 Richard Biener <rguenther@suse.de> + + * cfghooks.c (split_edge): Preserve EDGE_DFS_BACK if set. + 2020-05-12 Martin Liska <mliska@suse.cz> PR sanitizer/95033 diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index ea558b4..71c6b63 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -640,6 +640,7 @@ split_edge (edge e) profile_count count = e->count (); edge f; bool irr = (e->flags & EDGE_IRREDUCIBLE_LOOP) != 0; + bool back = (e->flags & EDGE_DFS_BACK) != 0; class loop *loop; basic_block src = e->src, dest = e->dest; @@ -659,6 +660,11 @@ split_edge (edge e) single_pred_edge (ret)->flags |= EDGE_IRREDUCIBLE_LOOP; single_succ_edge (ret)->flags |= EDGE_IRREDUCIBLE_LOOP; } + if (back) + { + single_pred_edge (ret)->flags &= ~EDGE_DFS_BACK; + single_succ_edge (ret)->flags |= EDGE_DFS_BACK; + } if (dom_info_available_p (CDI_DOMINATORS)) set_immediate_dominator (CDI_DOMINATORS, ret, single_pred (ret)); |