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