Commit 0bb686f
authored
More ArrayCmpxchg expected opts in Heap2Local (#8567)
When non-escaping allocations flow into the `expected` field of an
ArrayCmpxchg, optimize even if the ArrayCmpxchg has a non-constant
index. We typically only optimize array instructions with constant
fields, but that's because we need to know what field of the array is
accessed. Arrays flowing into the `expected` field are not accessed,
though, so there is no need for the accessed index to be constant.
Make sure that effects in the potentially non-constant index field are
preserved in the correct order by using a new scratch local to propagate
the index value past the `expected` and `replacement` expressions to the
newly generated `struct.atomic.get`.1 parent 13cb918 commit 0bb686f
File tree
2 files changed
+136
-34
lines changed- src/passes
- test/lit/passes
2 files changed
+136
-34
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
461 | 461 | | |
462 | 462 | | |
463 | 463 | | |
464 | | - | |
465 | | - | |
466 | | - | |
467 | | - | |
468 | | - | |
469 | | - | |
470 | | - | |
471 | | - | |
472 | | - | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
473 | 468 | | |
474 | 469 | | |
475 | 470 | | |
476 | 471 | | |
477 | 472 | | |
478 | | - | |
479 | | - | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
480 | 476 | | |
481 | | - | |
482 | | - | |
483 | 477 | | |
484 | 478 | | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
| 479 | + | |
489 | 480 | | |
490 | 481 | | |
491 | 482 | | |
492 | 483 | | |
493 | 484 | | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
498 | 489 | | |
499 | 490 | | |
500 | 491 | | |
| |||
1233 | 1224 | | |
1234 | 1225 | | |
1235 | 1226 | | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
1236 | 1232 | | |
1237 | | - | |
| 1233 | + | |
1238 | 1234 | | |
| 1235 | + | |
1239 | 1236 | | |
1240 | 1237 | | |
1241 | 1238 | | |
| |||
1467 | 1464 | | |
1468 | 1465 | | |
1469 | 1466 | | |
1470 | | - | |
1471 | | - | |
1472 | | - | |
1473 | | - | |
1474 | | - | |
1475 | | - | |
1476 | | - | |
1477 | | - | |
1478 | | - | |
1479 | | - | |
1480 | 1467 | | |
1481 | 1468 | | |
1482 | 1469 | | |
1483 | | - | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
1484 | 1481 | | |
1485 | 1482 | | |
1486 | 1483 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1465 | 1465 | | |
1466 | 1466 | | |
1467 | 1467 | | |
| 1468 | + | |
1468 | 1469 | | |
1469 | 1470 | | |
1470 | 1471 | | |
1471 | 1472 | | |
1472 | 1473 | | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
1473 | 1477 | | |
1474 | 1478 | | |
1475 | 1479 | | |
| |||
1483 | 1487 | | |
1484 | 1488 | | |
1485 | 1489 | | |
1486 | | - | |
| 1490 | + | |
1487 | 1491 | | |
1488 | 1492 | | |
1489 | 1493 | | |
| |||
1504 | 1508 | | |
1505 | 1509 | | |
1506 | 1510 | | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
| 1521 | + | |
| 1522 | + | |
| 1523 | + | |
| 1524 | + | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
| 1528 | + | |
| 1529 | + | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
| 1538 | + | |
| 1539 | + | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
| 1546 | + | |
| 1547 | + | |
| 1548 | + | |
| 1549 | + | |
| 1550 | + | |
| 1551 | + | |
| 1552 | + | |
| 1553 | + | |
| 1554 | + | |
| 1555 | + | |
| 1556 | + | |
| 1557 | + | |
| 1558 | + | |
| 1559 | + | |
| 1560 | + | |
| 1561 | + | |
| 1562 | + | |
| 1563 | + | |
| 1564 | + | |
| 1565 | + | |
| 1566 | + | |
| 1567 | + | |
| 1568 | + | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
0 commit comments