@@ -188,8 +188,10 @@ def extract_array(aryty, obj):
188188
189189 if isinstance (scalar_signature .return_type , (types .Tuple , types .UniTuple )):
190190 output_values = cgutils .unpack_tuple (builder , output_values )
191+ func_output_types = scalar_signature .return_type .types
191192 else :
192193 output_values = [output_values ]
194+ func_output_types = [scalar_signature .return_type ]
193195
194196 # Update output value or accumulators respectively
195197 for i , ((accu , _ ), value ) in enumerate (zip (output_accumulator , output_values )):
@@ -206,6 +208,9 @@ def extract_array(aryty, obj):
206208 idxs_bc = [zero if bc else idx for idx , bc in zip (idxs , output_bc [i ])]
207209 ptr = cgutils .get_item_pointer2 (context , builder , * outputs [i ], idxs_bc )
208210 # store = builder.store(value, ptr)
211+ value = context .cast (
212+ builder , value , func_output_types [i ], output_types [i ].dtype
213+ )
209214 arrayobj .store_item (context , builder , output_types [i ], value , ptr )
210215 # store.set_metadata("alias.scope", output_scope_set)
211216 # store.set_metadata("noalias", input_scope_set)
@@ -224,6 +229,9 @@ def extract_array(aryty, obj):
224229 # load.set_metadata("alias.scope", output_scope_set)
225230 # load.set_metadata("noalias", input_scope_set)
226231 # store = builder.store(load, ptr)
232+ load = context .cast (
233+ builder , load , func_output_types [output ], output_types [output ].dtype
234+ )
227235 arrayobj .store_item (context , builder , output_types [output ], load , ptr )
228236 # store.set_metadata("alias.scope", output_scope_set)
229237 # store.set_metadata("noalias", input_scope_set)
0 commit comments