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

在我的应用程序中,我有以下Objective-C代码
-(void)layoutPages
{
    NSMutableArray* sections = [NSMutableArray array];
    [sections addobject:[[NSAttributedString alloc] initWithString:@"Hello world"]];

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

控制台输出: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有类似的问题但没有循环变量.这可能是编译器错误吗?

解决方法

这可能是编译器设置问题.首先,您需要检查您的运行方案是否处于发布模式.转到“编辑方案…” – > “运行” – > “信息” – > “构建配置”.确保将值设置为“Debug”.

如果这不是问题,那么请确保您的调试版本设置没有打开编译器优化.确保“优化级别”设置为“无”以进行调试.还要确保没有其他可能设置编译器优化级别的位置,例如“其他C标志”设置.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...