Я получаю это утверждение при создании моего проекта LLVM:
`Ops.size ()> = NumSrcResults &&" Не предоставлено достаточно результатов "'
это инструкция, которая его вызывает:
def ASTI: F<0b100001,(outs),(ins i32imm:$i10s),"ASTI $i10s",[(set SP, (i32 (add (i32 SP), (i32 sext12To32Trunc2imm:$i10s))))] > {
let isReMaterializable = 1;
let mayLoad = 0;
let mayStore = 0;
let Defs = [SP];
let Uses = [SP];
}
Я давно на это смотрю и не могу определить, в чем проблема. Предполагается добавить немедленный к SP и сохранить результат обратно в SP (то есть SP = SP + i10s). Когда я печатаю Ops.size () и NumSrcResults, я получаю 0 и 2
Спасибо.
1/21/2019: Быстрое обновление: если добавить выходной регистр, утверждение исчезнет.
def ASTI: F <0b100001, <strong>(без учета CPURegs: $ ra) , (ins i32imm: $ i10s), "ASTI $ i10s", [(set CPURegs: $ ra , (i32 (добавить (i32 SP), (i32 sext12To32Trunc2imm: $ i10s))))]> {
Почему эта инструкция не может быть без выходного регистра?