0
:LLC - 기대 값 내가 LLC 내 example.ll 파일하려고 할 때이 메시지를 받고 있어요 토큰 오류
이llc: example.ll:12:29: error: expected value token
%1 = icmp slt i1 %cmptmp, i16 0
^
example.ll 파일 :
; ModuleID = 'modulle'
define i16 @main() {
entry:
%x = alloca i16
store i16 2, i16* %x
br label %loop_condition
loop_condition: ; preds = %loop, %entry
%0 = load i16, i16* %x
%cmptmp = icmp sgt i16 %0, 1
%1 = icmp slt i1 %cmptmp, i16 0
br i1 %1, label %loop, label %while_continue
loop: ; preds = %loop_condition
br label %loop_condition
while_continue: ; preds = %loop_condition
ret i16 0
}
내가 을 제거 i16 모두 정상적으로 작동하지만 LLVM이 내 코드에 삽입하는 이유를 알지 못합니다. 아무도 문제가 뭔지 알고 있습니까?
--- UPDATE ---
.ll 출력은 내 장난감 컴파일러에서입니다. 이 라인 및 코드입니다 :
Value *cond = llvm::CmpInst::Create(llvm::Instruction::ICmp, llvm::CmpInst::ICMP_SLT, binRelOpCond, llvm::ConstantInt::get(llvm::getGlobalContext(), llvm::APInt(16, 0, true)), "", codeGenContext.getBlock());
binRelOpCond 변수입니다 :
CmpInst *compareRes = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_SGT, left, right, "cmptmp", codeGenContext.getBlock());
감사합니다.
"왜 내 코드에 LLVM을 삽입했는지 모르겠다"- 좀 더 구체적인 질문이 있습니까? 그게 무슨 파일을 만들었지? – Oak
내 장난감 컴파일러에서 이것은 해당 세그먼트의 코드입니다 : '값 * cond = llvm :: CmpInst :: Create (llvm :: Instruction :: ICmp, llvm :: CmpInst :: ICMP_SLT, binRelOpCond, llvm :: ConstantInt :: 얻을 (LLVM :: getGlobalContext(), LLVM :: APInt (16, 0, TRUE)), "", codeGenContext.getBlock());' ** binRelOpCond **입니다 : 'CmpInst * compareRes = CmpInst :: Create (Instruction :: ICmp, CmpInst :: ICMP_SGT, 왼쪽, 오른쪽, "cmptmp", codeGenContext.getBlock()), ' 내가 뭘 잘못하고 있는지 모르겠다. 도와 주셔서 감사합니다. – roger
코드를 포함 해 주셔서 감사합니다. 문제의 본문으로 편집하는 것이 더 좋지만 :-) 나는 버그를 보았습니다. 그에 따라 아래에서 답변을 업데이트했습니다. – Oak