[midend]修改一点逻辑和注释,删除无用文件

This commit is contained in:
rain2133
2025-08-08 15:31:35 +08:00
parent f17e44f8d4
commit c4c91412d1
3 changed files with 37 additions and 11 deletions

View File

@@ -383,8 +383,24 @@ AliasType SysYAliasAnalysisPass::compareParameters(MemoryLocation* loc1, MemoryL
}
AliasType SysYAliasAnalysisPass::compareWithGlobal(MemoryLocation* loc1, MemoryLocation* loc2) {
// 涉及全局数组的访问,采用保守策略
// SysY中全局数组和其他内存位置的别名关系较复杂保守处理
// 涉及全局数组的访问分析
// 这里处理所有涉及全局数组的情况
// SysY特化局部数组与全局数组不别名
if ((loc1->isLocalArray && loc2->isGlobalArray) ||
(loc1->isGlobalArray && loc2->isLocalArray)) {
// 局部数组在栈上,全局数组在全局区,确定不别名
return AliasType::NO_ALIAS;
}
// SysY特化数组参数与全局数组可能别名保守处理
if ((loc1->isFunctionParameter && loc2->isGlobalArray) ||
(loc1->isGlobalArray && loc2->isFunctionParameter)) {
// 数组参数可能指向全局数组,需要保守处理
return AliasType::POSSIBLE_ALIAS;
}
// 其他涉及全局数组的情况,采用保守策略
return AliasType::POSSIBLE_ALIAS;
}
@@ -409,15 +425,6 @@ AliasType SysYAliasAnalysisPass::compareMixedTypes(MemoryLocation* loc1, MemoryL
// 因为局部数组是栈上分配,而数组参数是传入的外部数组
return AliasType::NO_ALIAS;
}
// 如果是局部数组与全局数组或参数的混合访问,通常也不别名
if ((loc1->isLocalArray && loc2->isGlobalArray) ||
(loc1->isGlobalArray && loc2->isLocalArray) ||
(loc1->isFunctionParameter && loc2->isGlobalArray) ||
(loc1->isGlobalArray && loc2->isFunctionParameter)) {
// 局部数组与全局数组或参数:通常不别名
// 因为局部数组是栈上分配,而全局数组或参数是传入的外部数组
return AliasType::NO_ALIAS;
}
// 对于其他混合情况,保守估计
return AliasType::UNKNOWN_ALIAS;