diff options
author | Ilya Enkovich <ilya.enkovich@intel.com> | 2016-05-19 13:50:22 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2016-05-19 13:50:22 +0000 |
commit | afb7243286fdf0ffdc965027e5d382604fe191f8 (patch) | |
tree | 5290bca9513f9d27a69e5fcf7b9ff24a6cef820f /gcc/cse.c | |
parent | 4f83064e3bf64e5b6fe615a49ee84cf61b0ac954 (diff) | |
download | gcc-afb7243286fdf0ffdc965027e5d382604fe191f8.zip gcc-afb7243286fdf0ffdc965027e5d382604fe191f8.tar.gz gcc-afb7243286fdf0ffdc965027e5d382604fe191f8.tar.bz2 |
cse.c (cse_main): Free dominance info.
gcc/
* cse.c (cse_main): Free dominance info.
(rest_of_handle_cse): Don't free dominance info.
(rest_of_handle_cse2): Likewise.
(rest_of_handle_cse_after_global_opts): Likewise.
gcc/testsuite/
* gcc.dg/pr71148.c: New test.
From-SVN: r236460
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 13 |
1 files changed, 4 insertions, 9 deletions
@@ -6669,6 +6669,10 @@ cse_main (rtx_insn *f ATTRIBUTE_UNUSED, int nregs) int *rc_order = XNEWVEC (int, last_basic_block_for_fn (cfun)); int i, n_blocks; + /* CSE doesn't use dominane info but can invalidate it in different ways. + For simplicity free dominance info here. */ + free_dominance_info (CDI_DOMINATORS); + df_set_flags (DF_LR_RUN_DCE); df_note_add_problem (); df_analyze (); @@ -7568,9 +7572,6 @@ rest_of_handle_cse (void) else if (tem == 1 || optimize > 1) cse_cfg_altered |= cleanup_cfg (0); - if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS)) - free_dominance_info (CDI_DOMINATORS); - return 0; } @@ -7640,9 +7641,6 @@ rest_of_handle_cse2 (void) else if (tem == 1) cse_cfg_altered |= cleanup_cfg (0); - if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS)) - free_dominance_info (CDI_DOMINATORS); - cse_not_expected = 1; return 0; } @@ -7717,9 +7715,6 @@ rest_of_handle_cse_after_global_opts (void) else if (tem == 1) cse_cfg_altered |= cleanup_cfg (0); - if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS)) - free_dominance_info (CDI_DOMINATORS); - flag_cse_follow_jumps = save_cfj; return 0; } |