gpt4 book ai didi

optimization - LLVM 结构返回优化

转载 作者:行者123 更新时间:2023-12-03 15:38:27 24 4
gpt4 key购买 nike

我想知道为什么 LLVM 无法优化以下 IR 代码(使用优化设置为“3”的 PassManagerBuilder,还使用 ​​LLVM 的“选择”工具):

%GenericStruct = type { i32 }

define void @makeGenericStructOuter(%GenericStruct* noalias nocapture sret) {
entry:
%1 = alloca %GenericStruct
call void @makeGenericStructInner(%GenericStruct* %1)
%2 = load %GenericStruct* %1
store %GenericStruct %2, %GenericStruct* %0
ret void
}

declare void @makeGenericStructInner(%GenericStruct* noalias nocapture sret)

预期的代码是:
%GenericStruct = type { i32 }

define void @makeGenericStructOuter(%GenericStruct* noalias nocapture sret) {
entry:
call void @makeGenericStructInner(%GenericStruct* %0)
ret void
}

declare void @makeGenericStructInner(%GenericStruct* noalias nocapture sret)

目前是否没有任何优化可用于处理这种情况?还是我未能生成(此代码是从我正在开发的前端生成)允许优化的正确 IR?

在建议之前,我无法生成按值返回的代码,因为这些函数必须可以从不知道“GenericStruct”大小或内容的其他模块/库调用(并且它们会在本地将“TestClass”声明为“struct不透明')。

最佳答案

如果您认为应该进行优化,请在 LLVM Bug Tracker 中报告错误。 .当报告错过的优化机会时,LLVM 开发人员通常会非常高兴和感兴趣。

关于optimization - LLVM 结构返回优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com