public override void Generate(CodeGenerator codeGenerator, FunctionGenerator fgen) { LLVMValueRef condValueRef = Condition.GetRef(codeGenerator, PrimitiveType.Boolean); // TODO: Validate blocks have the same incomings LLVMValueRef[] vals = new LLVMValueRef[Values.Length]; if (Target.HasIncoming) { IType[] targetTypes = Target.IncomingTypes; for (int i = 0; i < Values.Length; i++) { vals[Values.Length - 1 - i] = Values[i].GetRef(codeGenerator, targetTypes[i]); } } fgen.BranchConditional(condValueRef, Target, ElseTarget, vals); }