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
This commit is contained in:
parent
4f83064e3b
commit
afb7243286
4 changed files with 63 additions and 9 deletions
|
@ -1,3 +1,11 @@
|
|||
2016-05-19 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
PR rtl-optimization/71148
|
||||
* 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.
|
||||
|
||||
2016-05-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||
|
||||
PR target/71056
|
||||
|
|
13
gcc/cse.c
13
gcc/cse.c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-05-19 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
PR rtl-optimization/71148
|
||||
* gcc.dg/pr71148.c: New test.
|
||||
|
||||
2016-05-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||
|
||||
PR target/71056
|
||||
|
|
46
gcc/testsuite/gcc.dg/pr71148.c
Normal file
46
gcc/testsuite/gcc.dg/pr71148.c
Normal file
|
@ -0,0 +1,46 @@
|
|||
/* PR rtl-optimization/71148 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3 -funroll-loops" } */
|
||||
|
||||
int rh, ok, kq, fu;
|
||||
|
||||
void
|
||||
js (int cs)
|
||||
{
|
||||
rh = fu;
|
||||
if (fu != 0)
|
||||
{
|
||||
cs /= 3;
|
||||
if (cs <= 0)
|
||||
{
|
||||
int z9;
|
||||
for (z9 = 0; z9 < 2; ++z9)
|
||||
{
|
||||
z9 += cs;
|
||||
ok += z9;
|
||||
fu += ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
vy (int s3)
|
||||
{
|
||||
int yo, g2 = 0;
|
||||
sd:
|
||||
js (g2);
|
||||
for (yo = 0; yo < 2; ++yo)
|
||||
{
|
||||
if (fu != 0)
|
||||
goto sd;
|
||||
kq += (s3 != (g2 ? s3 : 0));
|
||||
for (s3 = 0; s3 < 72; ++s3)
|
||||
g2 *= (~0 - 1);
|
||||
g2 -= yo;
|
||||
}
|
||||
for (fu = 0; fu < 18; ++fu)
|
||||
for (yo = 0; yo < 17; ++yo)
|
||||
if (g2 < 0)
|
||||
goto sd;
|
||||
}
|
Loading…
Add table
Reference in a new issue