gpt4 book ai didi

objective-c - LLVM 循环优化错误?

转载 作者:太空狗 更新时间:2023-10-30 03:38:11 24 4
gpt4 key购买 nike

在我的应用程序中,我有以下 Objective-C 代码:

-(void)layoutPages
{
NSMutableArray* sections = [NSMutableArray array];
[sections addObject:[[NSAttributedString alloc] initWithString:@"Hello world"]];

for (NSAttributedString* contentSection in sections) {
NSLog(@"%@",contentSection);
}
}

enter image description here

控制台输出:2014-04-22 14:11:01.505 MyApp[24784:830b] Hello world{}

如果我使用 -Os 优化为 x86_64 架构编译,LLVM 会静默优化循环变量“contentSection”。当我使用 -O0 时,错误消失了。这是我尝试打印 contentSection 变量的描述时的输出:

(lldb) po contentSection
error: Couldn't materialize struct: the variable 'contentSection' has no location, it may have been optimized out
Errored out in Execute, couldn't PrepareToExecuteJITExpression

这怎么可能?从我的角度来看,循环变量在循环内部使用时永远不应该被优化掉。我看到其他人对 LLVM 也有类似的问题,但对循环变量却没有。这可能是编译器错误吗?

最佳答案

这可能是编译器设置问题。首先,您需要检查您的运行方案是否处于 Release模式。转到“编辑方案...”->“运行”->“信息”->“构建配置”。确保该值设置为“调试”。

如果这不是问题所在,请确保您的调试build设置没有打开编译器优化。确保“优化级别”设置为“无”以进行调试。还要确保没有其他地方可以设置编译器优化级别,例如在“其他 cflags”设置中。

关于objective-c - LLVM 循环优化错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218021/

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