| ... | @@ -5179,7 +5179,9 @@ fn switchExpr( | ... | @@ -5179,7 +5179,9 @@ fn switchExpr( |
| 5179 | } | 5179 | } |
| 5180 | extra_index += body_len - 2; | 5180 | extra_index += body_len - 2; |
| 5181 | const store_inst = scalar_cases_payload.items[extra_index]; | 5181 | const store_inst = scalar_cases_payload.items[extra_index]; |
| 5182 | if (zir_tags[store_inst] != .store_to_block_ptr) { | 5182 | if (zir_tags[store_inst] != .store_to_block_ptr or |
| | 5183 | zir_datas[store_inst].bin.lhs != block_scope.rl_ptr) |
| | 5184 | { |
| 5183 | extra_index += 2; | 5185 | extra_index += 2; |
| 5184 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[0..extra_index]); | 5186 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[0..extra_index]); |
| 5185 | break :special_prong; | 5187 | break :special_prong; |
| ... | @@ -5220,7 +5222,9 @@ fn switchExpr( | ... | @@ -5220,7 +5222,9 @@ fn switchExpr( |
| 5220 | } | 5222 | } |
| 5221 | extra_index += body_len - 2; | 5223 | extra_index += body_len - 2; |
| 5222 | const store_inst = scalar_cases_payload.items[extra_index]; | 5224 | const store_inst = scalar_cases_payload.items[extra_index]; |
| 5223 | if (zir_tags[store_inst] != .store_to_block_ptr) { | 5225 | if (zir_tags[store_inst] != .store_to_block_ptr or |
| | 5226 | zir_datas[store_inst].bin.lhs != block_scope.rl_ptr) |
| | 5227 | { |
| 5224 | extra_index += 2; | 5228 | extra_index += 2; |
| 5225 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); | 5229 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); |
| 5226 | continue; | 5230 | continue; |
| ... | @@ -5236,15 +5240,12 @@ fn switchExpr( | ... | @@ -5236,15 +5240,12 @@ fn switchExpr( |
| 5236 | .rhs = zir_datas[break_inst].@"break".operand, | 5240 | .rhs = zir_datas[break_inst].@"break".operand, |
| 5237 | }; | 5241 | }; |
| 5238 | zir_datas[break_inst].@"break".operand = parent_gz.indexToRef(store_inst); | 5242 | zir_datas[break_inst].@"break".operand = parent_gz.indexToRef(store_inst); |
| 5239 | } else if (zir_datas[store_inst].bin.lhs == block_scope.rl_ptr) { | 5243 | } else { |
| 5240 | scalar_cases_payload.items[body_len_index] -= 1; | 5244 | scalar_cases_payload.items[body_len_index] -= 1; |
| 5241 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); | 5245 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); |
| 5242 | extra_index += 1; | 5246 | extra_index += 1; |
| 5243 | astgen.extra.appendAssumeCapacity(scalar_cases_payload.items[extra_index]); | 5247 | astgen.extra.appendAssumeCapacity(scalar_cases_payload.items[extra_index]); |
| 5244 | extra_index += 1; | 5248 | extra_index += 1; |
| 5245 | } else { | | |
| 5246 | extra_index += 2; | | |
| 5247 | astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); | | |
| 5248 | } | 5249 | } |
| 5249 | } | 5250 | } |
| 5250 | extra_index = 0; | 5251 | extra_index = 0; |
| ... | @@ -5267,7 +5268,9 @@ fn switchExpr( | ... | @@ -5267,7 +5268,9 @@ fn switchExpr( |
| 5267 | } | 5268 | } |
| 5268 | extra_index += body_len - 2; | 5269 | extra_index += body_len - 2; |
| 5269 | const store_inst = multi_cases_payload.items[extra_index]; | 5270 | const store_inst = multi_cases_payload.items[extra_index]; |
| 5270 | if (zir_tags[store_inst] != .store_to_block_ptr) { | 5271 | if (zir_tags[store_inst] != .store_to_block_ptr or |
| | 5272 | zir_datas[store_inst].bin.lhs != block_scope.rl_ptr) |
| | 5273 | { |
| 5271 | extra_index += 2; | 5274 | extra_index += 2; |
| 5272 | astgen.extra.appendSliceAssumeCapacity(multi_cases_payload.items[start_index..extra_index]); | 5275 | astgen.extra.appendSliceAssumeCapacity(multi_cases_payload.items[start_index..extra_index]); |
| 5273 | continue; | 5276 | continue; |