diff --git a/tensorflow/c/kernels.cc b/tensorflow/c/kernels.cc index 86d88943f9a..a3d4e6a90f6 100644 --- a/tensorflow/c/kernels.cc +++ b/tensorflow/c/kernels.cc @@ -282,13 +282,16 @@ TF_Tensor* TF_AllocateOutput(TF_OpKernelContext* context, int index, } TF_Tensor* TF_ForwardInputOrAllocateOutput(TF_OpKernelContext* context, - int* candidate_input_indices, int num_input_indices, int output_index, - int64_t* output_dims, int output_num_dims, int* forwarded_input, - TF_Status* status) { + int* candidate_input_indices, int num_candidate_input_indices, + int output_index, int64_t* output_dims, int output_num_dims, + int* forwarded_input, TF_Status* status) { TF_SetStatus(status, TF_OK, ""); auto* cc_ctx = reinterpret_cast<::tensorflow::OpKernelContext*>(context); - tensorflow::gtl::ArraySlice input_indices_array(candidate_input_indices, - num_input_indices); + + static_assert(sizeof(int64_t) == sizeof(tensorflow::int64), + "64-bit int types should match in size"); + tensorflow::gtl::ArraySlice input_indices_array(candidate_input_indices, + num_candidate_input_indices); tensorflow::gtl::ArraySlice output_dimarray( reinterpret_cast(output_dims), output_num_dims); tensorflow::Tensor* output_tensor_pointer; diff --git a/tensorflow/c/kernels.h b/tensorflow/c/kernels.h index f9aae309df8..fe388b98dbd 100644 --- a/tensorflow/c/kernels.h +++ b/tensorflow/c/kernels.h @@ -205,10 +205,9 @@ TF_CAPI_EXPORT TF_Tensor* TF_AllocateOutput(TF_OpKernelContext* context, // forwarded input will be assign to output argument forwarded_input (if it's // not nullptr). If no inputs are forwarded, forwarded_input will be assigned // -1. - TF_CAPI_EXPORT TF_Tensor* TF_ForwardInputOrAllocateOutput( TF_OpKernelContext* context, int* candidate_input_indices, - int num_input_indices, int output_index, int64_t* output_dims, + int num_candidate_input_indices, int output_index, int64_t* output_dims, int output_num_dims, int* forwarded_input, TF_Status* status); #ifdef __cplusplus diff --git a/tensorflow/c/kernels_test.cc b/tensorflow/c/kernels_test.cc index 1ff461e0f03..e48e2bc4bb8 100644 --- a/tensorflow/c/kernels_test.cc +++ b/tensorflow/c/kernels_test.cc @@ -486,14 +486,16 @@ TEST_F(DeviceKernelOpTest, TestForwardInputOrAllocateOutput) { .Output("output1: float") .Attr("SomeDataTypeAttr: type");; - // A kernel whose Compute function that forwards one input to output + // A kernel whose Compute function that forwards a scalar input to output auto my_compute_func = [](void* kernel, TF_OpKernelContext* ctx) { TF_Status* s = TF_NewStatus(); int candidate_input_indices[1] = {0}; int forwarded_input; int64_t output_dims[1] = {}; - TF_Tensor* output = TF_ForwardInputOrAllocateOutput(ctx, - candidate_input_indices, 1, 0, output_dims, 0, &forwarded_input, s); + TF_Tensor* output = TF_ForwardInputOrAllocateOutput(/*context=*/ctx, + candidate_input_indices, /*num_candidate_input_indices=*/1, + /*output_index=*/0, output_dims, /*output_num_dims=*/0, + &forwarded_input, /*status=*/s); EXPECT_EQ(TF_OK, TF_GetCode(s)); EXPECT_EQ(forwarded_input, 0); EXPECT_EQ(TF_FLOAT, TF_TensorType(output)); @@ -518,7 +520,7 @@ TEST_F(DeviceKernelOpTest, TestForwardInputOrAllocateOutput) { AllocatorAttributes alloc_attrs; p.output_attr_array = &alloc_attrs; - Tensor t(static_cast(123)); + Tensor t(123.0f); gtl::InlinedVector inputs; // GetFakeKernel requires a NodeDef with two inputs