LLVM: не может быть двух IComInst - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь написать простой компилятор.

//PART 1: check if it is greater zero zero
    ICmpInst* greaterThanZero = new ICmpInst(ICmpInst::ICMP_SGE, (Value*)zero, (Value*)loadInstructionArrayIndex);
    Builder.Insert(greaterThanZero);
    TerminatorInst* greaterThanZeroError =BranchInst::Create(trap,cont,greaterThanZero);
    ReplaceInstWithInst(branchInstruction, greaterThanZeroError);
//PART 2: check if it is within the bound
    ICmpInst* compareInstruction = new ICmpInst(ICmpInst::ICMP_SGE, (Value*)loadInstructionArrayIndex, (Value*)bound);  //error occurs

Часть 1 работает нормально без проблем. Но как только я начинаю добавлять часть 2 для проверки второго условия, возникает ошибка:

LLVM ERROR: Broken function found, compilation aborted!

Какими способами можно решить эту проблему? Я думаю, есть ли другой способ подойти к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...