public void Process(MethodCompiler compiler, Instruction insn, LLVMBuilderRef builder) { Instruction destination = (Instruction)insn.Operand; var b1 = compiler.GetBasicBlock(destination.Offset); var b2 = compiler.GetBasicBlock(insn.Next.Offset); var value = compiler.CurrentBasicBlock.GetState().StackPop(); if (insn.OpCode.Code == Code.Brtrue || insn.OpCode.Code == Code.Brtrue_S) { LLVM.BuildCondBr(builder, value.Value, b1.LLVMBlock, b2.LLVMBlock); } else { LLVM.BuildCondBr(builder, value.Value, b2.LLVMBlock, b1.LLVMBlock); } }
public void Process(MethodCompiler compiler, Instruction insn, LLVMBuilderRef builder) { Instruction destination = (Instruction)insn.Operand; var basicBlock = compiler.GetBasicBlock(destination.Offset); LLVM.BuildBr(builder, basicBlock.LLVMBlock); }