0
LLVM 버전 5.0.0이 코드가 무한 루프에 빠지는 이유는 무엇입니까?
이 코드를 작성하고 clang/llvm으로 빌드하십시오. 그러나이 코드가 무한 루프로 변환되는 이유를 이해할 수 없습니다.
이 코드는 빌드를위한 C++ 코드입니다.
#include <stdio.h>
int foo()
{
for (int j= 0; j < 23; j++)
putchar('a');
}
int main()
{
foo();
}
다음 명령 줄을 사용했습니다.
clang -O0 a.cpp // a.out not working
clang -O1 a.cpp
-O2 -O3 ... also
LLVM-IR에도 오류가 있습니다.
clang -S -O1 -emit-llvm a.cpp
clang -S -O1 -mllvm -disable-llvm-optzns -emit-llvm a.cpp
+ opt -S -O1 a.ll
define i32 @_Z3foov() local_unnamed_addr #0 {
entry:
br label %for.cond
for.cond: ; preds = %for.cond, %entry
%call = tail call i32 @putchar(i32 97)
br label %for.cond
}
하지만이 코드는 매우 잘했다.
int main()
{
for (int j= 0; j < 23; j++)
putchar('a');
}