func (ri *directRetInfo) decode(ctx llvm.Context, allocaBuilder llvm.Builder, builder llvm.Builder, call llvm.Value) []llvm.Value { var args []llvm.Value switch len(ri.retTypes) { case 0: return nil case 1: args = []llvm.Value{call} default: args = make([]llvm.Value, len(ri.retTypes)) for i := 0; i != len(ri.retTypes); i++ { args[i] = builder.CreateExtractValue(call, i, "") } } d := directDecode(ctx, allocaBuilder, builder, ri.resultsType, args) if ri.numResults == 1 { return []llvm.Value{d} } else { results := make([]llvm.Value, ri.numResults) for i := 0; i != ri.numResults; i++ { results[i] = builder.CreateExtractValue(d, i, "") } return results } }