Beispiel #1
0
        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);
        }