[midend-LoopNormalization]消除不必要的循环特征分析结果使用。优化phi指令处理逻辑

This commit is contained in:
rain2133
2025-08-11 20:51:55 +08:00
parent 6a7355ed28
commit 1e3791a801
2 changed files with 131 additions and 41 deletions

View File

@ -1,7 +1,6 @@
#pragma once
#include "Loop.h" // 循环分析依赖
#include "LoopCharacteristics.h" // 循环特征分析依赖
#include "Dom.h" // 支配树分析依赖
#include "IR.h" // IR定义
#include "IRBuilder.h" // IR构建器
@ -47,7 +46,6 @@ private:
// ========== 缓存的分析结果 ==========
LoopAnalysisResult* loopAnalysis; // 循环结构分析结果
LoopCharacteristicsResult* loopCharacteristics; // 循环特征分析结果
DominatorTree* domTree; // 支配树分析结果
// ========== 规范化统计 ==========
@ -56,9 +54,11 @@ private:
size_t loopsNeedingPreheader; // 需要前置块的循环数
size_t preheadersCreated; // 创建的前置块数
size_t loopsNormalized; // 规范化的循环数
size_t redundantPhisRemoved; // 删除的冗余PHI节点数
NormalizationStats() : totalLoops(0), loopsNeedingPreheader(0),
preheadersCreated(0), loopsNormalized(0) {}
preheadersCreated(0), loopsNormalized(0),
redundantPhisRemoved(0) {}
} stats;
// ========== 核心规范化方法 ==========
@ -78,7 +78,7 @@ private:
BasicBlock* createPreheaderForLoop(Loop* loop);
/**
* 检查循环是否需要前置块
* 检查循环是否需要前置块(基于结构性需求)
* @param loop 要检查的循环
* @return true如果需要前置块
*/