Hi,

I have a question about GCC's macro fusion pass.
In the GCC internals doc, there is a hook for scheduling:
TARGET_SCHED_MACRO_FUSION_PAIR_P
<https://gcc.gnu.org/onlinedocs/gccint/Scheduling.html#index-TARGET_005fSCHED_005fMACRO_005fFUSION_005fPAIR_005fP>
It says:
> If this hook returns true for the given insn pair (prev and curr),
> the scheduler will put them into a sched group, and they will not be
scheduled apart.

My questions are, does this mean that GCC is just adding a mark on
back-to-back insns (as their name *prev* and *curr* suggests) and won't
separate them during scheduling? Does GCC try to search for separate but
fusible insns and to put them together?

I also traced the code in sched_macro_fuse_insns()
<https://github.com/gcc-mirror/gcc/blob/640b550425180bdab7bc67edc6a48465f4023888/gcc/sched-deps.cc#L2844-L2880>,
but it seems only grouping back-to-back insns ...

Thanks.

Hau

Reply via email to