Revisiting the use of cselib in alias.c for scheduling
Maxim Kuvyrkov
maxim@codesourcery.com
Thu Jul 22 07:30:00 GMT 2010
On 7/22/10 3:34 AM, Steven Bosscher wrote:
> On Wed, Jul 21, 2010 at 10:09 PM, Maxim Kuvyrkov<maxim@codesourcery.com> wrote:
>> Cselib can /always/ be used during second scheduling pass
>
> Except with the selective scheduler when it works on regions that are
> not extended basic blocks, I suppose?
Right, I was considering sched-rgn scheduler, not sel-sched.
>
>> and on
>> single-block regions during the first scheduling pass (after RA sched-rgn
>> operates on single-block regions).
>>
>> Modulo the bugs enabling cselib might surface, the only reason not to enable
>> cselib for single-block regions in sched-rgn may be increased compile time.
>> That requires some benchmarking, but my gut feeling is that the benefits
>> would outweigh the compile-time cost.
>
> So something like the following _should_ work? If so, I'll give it a
> try on x86*.
>
> Ciao!
> Steven
>
> Index: sched-rgn.c
> ===================================================================
> --- sched-rgn.c (revision 162355)
> +++ sched-rgn.c (working copy)
> @@ -3285,8 +3285,11 @@
> rgn_setup_sched_infos (void)
> {
> if (!sel_sched_p ())
> - memcpy (&rgn_sched_deps_info,&rgn_const_sched_deps_info,
> - sizeof (rgn_sched_deps_info));
> + {
> + memcpy (&rgn_sched_deps_info,&rgn_const_sched_deps_info,
> + sizeof (rgn_sched_deps_info));
> + rgn_sched_deps_info.use_cselib = reload_completed;
Yes, this should work. You can also enable cselib for single-block
regions for first scheduling pass too. I.e.,
index 89743c3..047b717 100644
--- a/gcc/sched-rgn.c
+++ b/gcc/sched-rgn.c
@@ -2935,6 +2935,9 @@ schedule_region (int rgn)
if (sched_is_disabled_for_current_region_p ())
return;
+ gcc_assert (!reload_completed || current_nr_blocks == 1);
+ rgn_sched_deps_info.use_cselib = (current_nr_blocks == 1);
+
sched_rgn_compute_dependencies (rgn);
sched_rgn_local_init (rgn);
Thanks,
--
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724
More information about the Gcc
mailing list