mlx icon indicating copy to clipboard operation
mlx copied to clipboard

There are few clang warnings of type: redundant-move, conditional-uninitialized, pessimizing-move, unused-lambda-capture, sometimes-uninitialized

Open lalavany-microsoft-com opened this issue 5 months ago • 0 comments

In my iOS project, I am adding dependency on mlx-swift (source code) and mlx is added as submodule for that. iOS project treats redundant-move, conditional-uninitialized, pessimizing-move, unused-lambda-capture, sometimes-uninitialized warnings as errors at build time and I can't get an exception to treat these as warnings due some restrictions in my org.

Please fix the below errors in this repo:

/mlx/mlx/backend/common/compiled.cpp:191:29: error: variable 'data_size' may be uninitialized when used here [-Werror,-Wconditional-uninitialized] 191 | allocator::malloc(data_size * outputs[o].itemsize()),

/mlx/mlx/backend/metal/device.cpp:577:25: error: variable 'kernel' may be uninitialized when used here [-Werror,-Wconditional-uninitialized] 577 | if (!mtl_function || !kernel) {

/mlx/mlx/backend/metal/device.cpp:452:20: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move] 452 | outputs = std::move(enc.outputs()),

/mlx/mlx/fast.cpp:409:32: error: lambda capture 'inputs' is not used [-Werror,-Wunused-lambda-capture] 409 | auto default_inv_freqs = &inputs, &s, &t, base, half_dims { | ~^~~~~~~

/mlx/mlx/fast.cpp:678:27: error: lambda capture 'final_type' is not used [-Werror,-Wunused-lambda-capture] 678 | auto fallback = [scale, final_type, n_q_heads, n_kv_heads, do_causal, s](

/mlx/mlx/linalg.cpp:265:9: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move] 265 | std::move(a.dtype()),

/mlx/mlx/backend/cpu/masked_mm.cpp:178:7: error: variable 'a_mask_ptr' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] 178 | if (has_op_mask) { | ^~~~~~~~~~~

/mlx/mlx/backend/cpu/masked_mm.cpp:178:7: error: variable 'b_mask_ptr' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] 178 | if (has_op_mask) { | ^~~~~~~~~~~

/mlx/mlx/backend/cpu/masked_mm.cpp:192:7: error: variable 'out_mask_ptr' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] 192 | if (has_out_mask) { | ^~~~~~~~~~~~

/mlx/mlx/backend/cpu/masked_mm.cpp:178:7: error: variable 'a_mask_bool' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] 178 | if (has_op_mask) { | ^~~~~~~~~~~

/mlx/mlx/backend/cpu/masked_mm.cpp:178:7: error: variable 'b_mask_bool' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] 178 | if (has_op_mask) { | ^~~~~~~~~~~

/mlx/mlx/backend/cpu/masked_mm.cpp:192:7: error: variable 'out_mask_bool' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] 192 | if (has_out_mask) { | ^~~~~~~~~~~~

/mlx/mlx/backend/metal/metal.cpp:78:28: error: lambda capture 's' is not used [-Werror,-Wunused-lambda-capture] 78 | cb->addCompletedHandler([s](MTL::CommandBuffer* cbuf) { check_error(cbuf); });

/mlx/mlx/backend/metal/metal.cpp:67:10: error: lambda capture 's' is not used [-Werror,-Wunused-lambda-capture] 67 | [s, buffers = std::move(buffers)](MTL::CommandBuffer* cbuf) { | ^~

/mlx/mlx/backend/metal/normalization.cpp:102:24: error: lambda capture 'd' is not used [-Werror,-Wunused-lambda-capture] 102 | auto check_input = [&d, &s](const array& x) -> std::pair<array, bool> {

/mlx/mlx/ops.cpp:247:12: error: redundant move in return statement [-Werror,-Wredundant-move] 247 | return std::move(a);

/mlx/mlx/transforms.cpp:709:55: error: variable 'vmap_ax_size' may be uninitialized when used here [-Werror,-Wconditional-uninitialized] 709 | if (size_t in_ax = inputs[i].shape(in_axes[i]); vmap_ax_size != in_ax) { | ^~~~~~~~~~~~ /mlx/mlx/transforms.cpp:690:22: note: initialize the variable 'vmap_ax_size' to silence this warning 690 | size_t vmap_ax_size; | ^ | = 0 /mlx/mlx/transforms.cpp:906:8: error: lambda capture 'in_axis_a' is not used [-Werror,-Wunused-lambda-capture] 906 | [in_axis_a, in_axis_b, out_axis, fun](const std::vector& inputs) { | ^~~~~~~~~~ /mlx/mlx/transforms.cpp:906:19: error: lambda capture 'in_axis_b' is not used [-Werror,-Wunused-lambda-capture] 906 | [in_axis_a, in_axis_b, out_axis, fun](const std::vector& inputs) { | ^~~~~~~~~~ /mlx/mlx/transforms.cpp:906:30: error: lambda capture 'out_axis' is not used [-Werror,-Wunused-lambda-capture] 906 | [in_axis_a, in_axis_b, out_axis, fun](const std::vector& inputs) { | ^~~~~~~~~ /mlx/mlx/transforms.cpp:919:8: error: lambda capture 'in_axis' is not used [-Werror,-Wunused-lambda-capture] 919 | [in_axis, out_axis, fun](const std::vector& inputs) { | ^~~~~~~~ /mlx/mlx/transforms.cpp:919:17: error: lambda capture 'out_axis' is not used [-Werror,-Wunused-lambda-capture] 919 | [in_axis, out_axis, fun](const std::vector& inputs) { | ^~~~~~~~~

/mlx/mlx/backend/metal/unary.cpp:28:40: error: lambda capture 'out' is not used [-Werror,-Wunused-lambda-capture] 28 | auto maybe_collapse = contig, &in, &out { |

lalavany-microsoft-com avatar Jul 15 '25 09:07 lalavany-microsoft-com