Message ID | 000301cf5948$05399190$0facb4b0$@arm.com |
---|---|
State | New |
Headers | show |
On Wed, Apr 16, 2014 at 9:46 AM, Joey Ye <joey.ye@arm.com> wrote: > > >> -----Original Message----- >> From: Joey Ye [mailto:joey.ye@arm.com] >> Sent: Tuesday, April 15, 2014 6:37 PM >> To: 'Richard Biener' >> Cc: GCC Patches >> Subject: RE: [patch] Disable if_conversion2 for Og >> >> > Ok for trunk and branches after a while. Why does if-conversion not have >> > the same problem? On the GIMPLE part we avoid all kinds of if-conversion >> > with -Og. >> I think if-conversion should be disabled for Og too, but I don't have a case to >> show that it is harmful. If GIMPLE avoids all if-conversion, it is nature to do >> the same for RTL. I'll test and send another patch to also disable if-conversion. > New patch tested with more regressions with -Og, which are expected. > FAIL: gcc.target/arm/its.c scan-assembler-times \\tit 2 > FAIL: gcc.target/arm/pr40956.c scan-assembler-times mov[\\\\t ]*r., #0 1 > FAIL: gcc.target/arm/pr42835.c scan-assembler-times moveq[\\\\t ]*r.,[\\\\t ]*# 1 > FAIL: gcc.target/arm/pr42835.c scan-assembler-times movne[\\\\t ]*r.,[\\\\t ]*# 1 > FAIL: gcc.target/arm/shiftable.c scan-assembler sub.*[al]sl #6 > FAIL: gcc.target/arm/thumb-ifcvt-2.c scan-assembler asreq > FAIL: gcc.target/arm/thumb-ifcvt-2.c scan-assembler lslne > FAIL: gcc.target/arm/thumb-ifcvt.c scan-assembler asrne > FAIL: gcc.target/arm/thumb-ifcvt.c scan-assembler lslne > FAIL: gcc.target/arm/vseleqdf.c scan-assembler-times vseleq.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vseleqsf.c scan-assembler-times vseleq.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselgedf.c scan-assembler-times vselge.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vselgesf.c scan-assembler-times vselge.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselgtdf.c scan-assembler-times vselgt.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vselgtsf.c scan-assembler-times vselgt.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselledf.c scan-assembler-times vselgt.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vsellesf.c scan-assembler-times vselgt.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselltdf.c scan-assembler-times vselge.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vselltsf.c scan-assembler-times vselge.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselnedf.c scan-assembler-times vseleq.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vselnesf.c scan-assembler-times vseleq.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselvcdf.c scan-assembler-times vselvs.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vselvcsf.c scan-assembler-times vselvs.f32\\ts[0-9]+ 1 > FAIL: gcc.target/arm/vselvsdf.c scan-assembler-times vselvs.f64\\td[0-9]+ 1 > FAIL: gcc.target/arm/vselvssf.c scan-assembler-times vselvs.f32\\ts[0-9]+ 1 > > OK? I suppose the tests above are usually not run with -Og thus the patch won't regress regular testing. Ok for trunk. Thanks, Richard. > ChangeLog: > * opts.c (OPT_fif_conversion, OPT_fif_conversion2): Disable for Og. > > diff --git a/gcc/opts.c b/gcc/opts.c > index fdc903f..3f3db1a 100644 > --- a/gcc/opts.c > +++ b/gcc/opts.c > @@ -431,8 +431,8 @@ static const struct default_options default_options_table[] = > { OPT_LEVELS_1_PLUS, OPT_fguess_branch_probability, NULL, 1 }, > { OPT_LEVELS_1_PLUS, OPT_fcprop_registers, NULL, 1 }, > { OPT_LEVELS_1_PLUS, OPT_fforward_propagate, NULL, 1 }, > - { OPT_LEVELS_1_PLUS, OPT_fif_conversion, NULL, 1 }, > - { OPT_LEVELS_1_PLUS, OPT_fif_conversion2, NULL, 1 }, > + { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion, NULL, 1 }, > + { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion2, NULL, 1 }, > { OPT_LEVELS_1_PLUS, OPT_fipa_pure_const, NULL, 1 }, > { OPT_LEVELS_1_PLUS, OPT_fipa_reference, NULL, 1 }, > { OPT_LEVELS_1_PLUS, OPT_fipa_profile, NULL, 1 }, > >
On 16/04/14 10:30, Richard Biener wrote: > On Wed, Apr 16, 2014 at 9:46 AM, Joey Ye <joey.ye@arm.com> wrote: >> >> >>> -----Original Message----- >>> From: Joey Ye [mailto:joey.ye@arm.com] >>> Sent: Tuesday, April 15, 2014 6:37 PM >>> To: 'Richard Biener' >>> Cc: GCC Patches >>> Subject: RE: [patch] Disable if_conversion2 for Og >>> >>>> Ok for trunk and branches after a while. Why does if-conversion not have >>>> the same problem? On the GIMPLE part we avoid all kinds of if-conversion >>>> with -Og. >>> I think if-conversion should be disabled for Og too, but I don't have a case to >>> show that it is harmful. If GIMPLE avoids all if-conversion, it is nature to do >>> the same for RTL. I'll test and send another patch to also disable if-conversion. >> New patch tested with more regressions with -Og, which are expected. >> FAIL: gcc.target/arm/its.c scan-assembler-times \\tit 2 >> FAIL: gcc.target/arm/pr40956.c scan-assembler-times mov[\\\\t ]*r., #0 1 >> FAIL: gcc.target/arm/pr42835.c scan-assembler-times moveq[\\\\t ]*r.,[\\\\t ]*# 1 >> FAIL: gcc.target/arm/pr42835.c scan-assembler-times movne[\\\\t ]*r.,[\\\\t ]*# 1 >> FAIL: gcc.target/arm/shiftable.c scan-assembler sub.*[al]sl #6 >> FAIL: gcc.target/arm/thumb-ifcvt-2.c scan-assembler asreq >> FAIL: gcc.target/arm/thumb-ifcvt-2.c scan-assembler lslne >> FAIL: gcc.target/arm/thumb-ifcvt.c scan-assembler asrne >> FAIL: gcc.target/arm/thumb-ifcvt.c scan-assembler lslne >> FAIL: gcc.target/arm/vseleqdf.c scan-assembler-times vseleq.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vseleqsf.c scan-assembler-times vseleq.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselgedf.c scan-assembler-times vselge.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vselgesf.c scan-assembler-times vselge.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselgtdf.c scan-assembler-times vselgt.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vselgtsf.c scan-assembler-times vselgt.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselledf.c scan-assembler-times vselgt.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vsellesf.c scan-assembler-times vselgt.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselltdf.c scan-assembler-times vselge.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vselltsf.c scan-assembler-times vselge.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselnedf.c scan-assembler-times vseleq.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vselnesf.c scan-assembler-times vseleq.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselvcdf.c scan-assembler-times vselvs.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vselvcsf.c scan-assembler-times vselvs.f32\\ts[0-9]+ 1 >> FAIL: gcc.target/arm/vselvsdf.c scan-assembler-times vselvs.f64\\td[0-9]+ 1 >> FAIL: gcc.target/arm/vselvssf.c scan-assembler-times vselvs.f32\\ts[0-9]+ 1 >> >> OK? > > I suppose the tests above are usually not run with -Og thus the patch > won't regress regular testing. > > Ok for trunk. I'd like to see these tests fixed to ensure that they're skipped if this goes in. R. > > Thanks, > Richard. > >> ChangeLog: >> * opts.c (OPT_fif_conversion, OPT_fif_conversion2): Disable for Og. >> >> diff --git a/gcc/opts.c b/gcc/opts.c >> index fdc903f..3f3db1a 100644 >> --- a/gcc/opts.c >> +++ b/gcc/opts.c >> @@ -431,8 +431,8 @@ static const struct default_options default_options_table[] = >> { OPT_LEVELS_1_PLUS, OPT_fguess_branch_probability, NULL, 1 }, >> { OPT_LEVELS_1_PLUS, OPT_fcprop_registers, NULL, 1 }, >> { OPT_LEVELS_1_PLUS, OPT_fforward_propagate, NULL, 1 }, >> - { OPT_LEVELS_1_PLUS, OPT_fif_conversion, NULL, 1 }, >> - { OPT_LEVELS_1_PLUS, OPT_fif_conversion2, NULL, 1 }, >> + { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion, NULL, 1 }, >> + { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion2, NULL, 1 }, >> { OPT_LEVELS_1_PLUS, OPT_fipa_pure_const, NULL, 1 }, >> { OPT_LEVELS_1_PLUS, OPT_fipa_reference, NULL, 1 }, >> { OPT_LEVELS_1_PLUS, OPT_fipa_profile, NULL, 1 }, >> >> >
diff --git a/gcc/opts.c b/gcc/opts.c index fdc903f..3f3db1a 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -431,8 +431,8 @@ static const struct default_options default_options_table[] = { OPT_LEVELS_1_PLUS, OPT_fguess_branch_probability, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fcprop_registers, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fforward_propagate, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fif_conversion, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fif_conversion2, NULL, 1 }, + { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion, NULL, 1 }, + { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion2, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fipa_pure_const, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fipa_reference, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fipa_profile, NULL, 1 },