| ... | ... | @@ -1262,6 +1262,273 @@ pub const Inst = struct { |
| 1262 | 1262 | }; |
| 1263 | 1263 | } |
| 1264 | 1264 | |
| 1265 | /// AstGen uses this to find out if `Ref.void_value` should be used in place |
| 1266 | /// of the result of a given instruction. This allows Sema to forego adding |
| 1267 | /// the instruction to the map after analysis. |
| 1268 | pub fn isAlwaysVoid(tag: Tag) bool { |
| 1269 | return switch (tag) { |
| 1270 | .breakpoint, |
| 1271 | .fence, |
| 1272 | .@"break", |
| 1273 | .break_inline, |
| 1274 | .condbr, |
| 1275 | .condbr_inline, |
| 1276 | .compile_error, |
| 1277 | .ret_node, |
| 1278 | .ret_load, |
| 1279 | .ret_tok, |
| 1280 | .ret_err_value, |
| 1281 | .@"unreachable", |
| 1282 | .repeat, |
| 1283 | .repeat_inline, |
| 1284 | .panic, |
| 1285 | .dbg_stmt, |
| 1286 | .dbg_var_ptr, |
| 1287 | .dbg_var_val, |
| 1288 | .ensure_result_used, |
| 1289 | .ensure_result_non_error, |
| 1290 | .ensure_err_payload_void, |
| 1291 | .set_eval_branch_quota, |
| 1292 | .atomic_store, |
| 1293 | .store, |
| 1294 | .store_node, |
| 1295 | .store_to_block_ptr, |
| 1296 | .store_to_inferred_ptr, |
| 1297 | .resolve_inferred_alloc, |
| 1298 | .validate_array_init_ty, |
| 1299 | .validate_struct_init_ty, |
| 1300 | .validate_struct_init, |
| 1301 | .validate_struct_init_comptime, |
| 1302 | .validate_array_init, |
| 1303 | .validate_array_init_comptime, |
| 1304 | .@"export", |
| 1305 | .export_value, |
| 1306 | .set_align_stack, |
| 1307 | .set_cold, |
| 1308 | .set_float_mode, |
| 1309 | .set_runtime_safety, |
| 1310 | .memcpy, |
| 1311 | .memset, |
| 1312 | => true, |
| 1313 | |
| 1314 | .param, |
| 1315 | .param_comptime, |
| 1316 | .param_anytype, |
| 1317 | .param_anytype_comptime, |
| 1318 | .add, |
| 1319 | .addwrap, |
| 1320 | .add_sat, |
| 1321 | .alloc, |
| 1322 | .alloc_mut, |
| 1323 | .alloc_comptime_mut, |
| 1324 | .alloc_inferred, |
| 1325 | .alloc_inferred_mut, |
| 1326 | .alloc_inferred_comptime, |
| 1327 | .alloc_inferred_comptime_mut, |
| 1328 | .make_ptr_const, |
| 1329 | .array_cat, |
| 1330 | .array_mul, |
| 1331 | .array_type, |
| 1332 | .array_type_sentinel, |
| 1333 | .vector_type, |
| 1334 | .elem_type, |
| 1335 | .indexable_ptr_len, |
| 1336 | .anyframe_type, |
| 1337 | .as, |
| 1338 | .as_node, |
| 1339 | .bit_and, |
| 1340 | .bitcast, |
| 1341 | .bit_or, |
| 1342 | .block, |
| 1343 | .block_inline, |
| 1344 | .suspend_block, |
| 1345 | .loop, |
| 1346 | .bool_br_and, |
| 1347 | .bool_br_or, |
| 1348 | .bool_not, |
| 1349 | .call, |
| 1350 | .cmp_lt, |
| 1351 | .cmp_lte, |
| 1352 | .cmp_eq, |
| 1353 | .cmp_gte, |
| 1354 | .cmp_gt, |
| 1355 | .cmp_neq, |
| 1356 | .coerce_result_ptr, |
| 1357 | .error_set_decl, |
| 1358 | .error_set_decl_anon, |
| 1359 | .error_set_decl_func, |
| 1360 | .decl_ref, |
| 1361 | .decl_val, |
| 1362 | .load, |
| 1363 | .div, |
| 1364 | .elem_ptr, |
| 1365 | .elem_val, |
| 1366 | .elem_ptr_node, |
| 1367 | .elem_ptr_imm, |
| 1368 | .elem_val_node, |
| 1369 | .field_ptr, |
| 1370 | .field_val, |
| 1371 | .field_call_bind, |
| 1372 | .field_ptr_named, |
| 1373 | .field_val_named, |
| 1374 | .field_call_bind_named, |
| 1375 | .func, |
| 1376 | .func_inferred, |
| 1377 | .has_decl, |
| 1378 | .int, |
| 1379 | .int_big, |
| 1380 | .float, |
| 1381 | .float128, |
| 1382 | .int_type, |
| 1383 | .is_non_null, |
| 1384 | .is_non_null_ptr, |
| 1385 | .is_non_err, |
| 1386 | .is_non_err_ptr, |
| 1387 | .mod_rem, |
| 1388 | .mul, |
| 1389 | .mulwrap, |
| 1390 | .mul_sat, |
| 1391 | .param_type, |
| 1392 | .ref, |
| 1393 | .shl, |
| 1394 | .shl_sat, |
| 1395 | .shr, |
| 1396 | .str, |
| 1397 | .sub, |
| 1398 | .subwrap, |
| 1399 | .sub_sat, |
| 1400 | .negate, |
| 1401 | .negate_wrap, |
| 1402 | .typeof, |
| 1403 | .typeof_builtin, |
| 1404 | .xor, |
| 1405 | .optional_type, |
| 1406 | .optional_payload_safe, |
| 1407 | .optional_payload_unsafe, |
| 1408 | .optional_payload_safe_ptr, |
| 1409 | .optional_payload_unsafe_ptr, |
| 1410 | .err_union_payload_safe, |
| 1411 | .err_union_payload_unsafe, |
| 1412 | .err_union_payload_safe_ptr, |
| 1413 | .err_union_payload_unsafe_ptr, |
| 1414 | .err_union_code, |
| 1415 | .err_union_code_ptr, |
| 1416 | .error_to_int, |
| 1417 | .int_to_error, |
| 1418 | .ptr_type, |
| 1419 | .ptr_type_simple, |
| 1420 | .enum_literal, |
| 1421 | .merge_error_sets, |
| 1422 | .error_union_type, |
| 1423 | .bit_not, |
| 1424 | .error_value, |
| 1425 | .slice_start, |
| 1426 | .slice_end, |
| 1427 | .slice_sentinel, |
| 1428 | .import, |
| 1429 | .typeof_log2_int_type, |
| 1430 | .log2_int_type, |
| 1431 | .switch_capture, |
| 1432 | .switch_capture_ref, |
| 1433 | .switch_capture_multi, |
| 1434 | .switch_capture_multi_ref, |
| 1435 | .switch_block, |
| 1436 | .switch_cond, |
| 1437 | .switch_cond_ref, |
| 1438 | .array_base_ptr, |
| 1439 | .field_base_ptr, |
| 1440 | .struct_init_empty, |
| 1441 | .struct_init, |
| 1442 | .struct_init_ref, |
| 1443 | .struct_init_anon, |
| 1444 | .struct_init_anon_ref, |
| 1445 | .array_init, |
| 1446 | .array_init_sent, |
| 1447 | .array_init_anon, |
| 1448 | .array_init_ref, |
| 1449 | .array_init_sent_ref, |
| 1450 | .array_init_anon_ref, |
| 1451 | .union_init, |
| 1452 | .field_type, |
| 1453 | .field_type_ref, |
| 1454 | .int_to_enum, |
| 1455 | .enum_to_int, |
| 1456 | .type_info, |
| 1457 | .size_of, |
| 1458 | .bit_size_of, |
| 1459 | .ptr_to_int, |
| 1460 | .align_of, |
| 1461 | .bool_to_int, |
| 1462 | .embed_file, |
| 1463 | .error_name, |
| 1464 | .sqrt, |
| 1465 | .sin, |
| 1466 | .cos, |
| 1467 | .exp, |
| 1468 | .exp2, |
| 1469 | .log, |
| 1470 | .log2, |
| 1471 | .log10, |
| 1472 | .fabs, |
| 1473 | .floor, |
| 1474 | .ceil, |
| 1475 | .trunc, |
| 1476 | .round, |
| 1477 | .tag_name, |
| 1478 | .reify, |
| 1479 | .type_name, |
| 1480 | .frame_type, |
| 1481 | .frame_size, |
| 1482 | .float_to_int, |
| 1483 | .int_to_float, |
| 1484 | .int_to_ptr, |
| 1485 | .float_cast, |
| 1486 | .int_cast, |
| 1487 | .err_set_cast, |
| 1488 | .ptr_cast, |
| 1489 | .truncate, |
| 1490 | .align_cast, |
| 1491 | .has_field, |
| 1492 | .clz, |
| 1493 | .ctz, |
| 1494 | .pop_count, |
| 1495 | .byte_swap, |
| 1496 | .bit_reverse, |
| 1497 | .div_exact, |
| 1498 | .div_floor, |
| 1499 | .div_trunc, |
| 1500 | .mod, |
| 1501 | .rem, |
| 1502 | .shl_exact, |
| 1503 | .shr_exact, |
| 1504 | .bit_offset_of, |
| 1505 | .offset_of, |
| 1506 | .cmpxchg_strong, |
| 1507 | .cmpxchg_weak, |
| 1508 | .splat, |
| 1509 | .reduce, |
| 1510 | .shuffle, |
| 1511 | .select, |
| 1512 | .atomic_load, |
| 1513 | .atomic_rmw, |
| 1514 | .mul_add, |
| 1515 | .builtin_call, |
| 1516 | .field_parent_ptr, |
| 1517 | .maximum, |
| 1518 | .minimum, |
| 1519 | .builtin_async_call, |
| 1520 | .c_import, |
| 1521 | .@"resume", |
| 1522 | .@"await", |
| 1523 | .await_nosuspend, |
| 1524 | .ret_err_value_code, |
| 1525 | .extended, |
| 1526 | .closure_get, |
| 1527 | .closure_capture, |
| 1528 | => false, |
| 1529 | }; |
| 1530 | } |
| 1531 | |
| 1265 | 1532 | /// Used by debug safety-checking code. |
| 1266 | 1533 | pub const data_tags = list: { |
| 1267 | 1534 | @setEvalBranchQuota(2000); |