示例#1
0
        /// <inheritdoc/>
        public override BlockCodegen Emit(BasicBlockBuilder BasicBlock)
        {
            var ptrResult = BaseAddress.Emit(BasicBlock);

            BasicBlock = ptrResult.BasicBlock;
            var indexVals = new LLVMValueRef[Indices.Count];

            for (int i = 0; i < indexVals.Length; i++)
            {
                var indexResult = Indices[i].Emit(BasicBlock);
                BasicBlock   = indexResult.BasicBlock;
                indexVals[i] = indexResult.Value;
            }
            return(new BlockCodegen(
                       BasicBlock,
                       BuildGEP(BasicBlock.Builder, ptrResult.Value, indexVals, "gep_tmp")));
        }