diff --git a/src/mir/RegAlloc.cpp b/src/mir/RegAlloc.cpp index a8d6cd60..394106c5 100644 --- a/src/mir/RegAlloc.cpp +++ b/src/mir/RegAlloc.cpp @@ -1431,6 +1431,10 @@ namespace mir } } + // 大函数丢弃 move 偏好以保持分配稳定性 + if (function.GetNumVRegs() > 150) + move_preferences.clear(); + std::vector gp_alloc(GP_ALLOCATABLE, GP_ALLOCATABLE + GP_NUM_ALLOCATABLE); std::vector fp_alloc(FP_ALLOCATABLE, FP_ALLOCATABLE + FP_NUM_ALLOCATABLE); @@ -1719,6 +1723,9 @@ namespace mir } } + if (function.GetNumVRegs() > 150) + move_preferences.clear(); + std::vector gp_alloc(GP_ALLOCATABLE, GP_ALLOCATABLE + GP_NUM_ALLOCATABLE); std::vector fp_alloc(FP_ALLOCATABLE, FP_ALLOCATABLE + FP_NUM_ALLOCATABLE); InterferenceGraph gp_graph, fp_graph;