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 {
|