authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-31 09:55:31+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-12 17:07:49+02:00
log5c2e300f427efd76f52aefdaa8ad7fb85bb1d2d5
tree2a1cccdce7385a79e7365aade9f44a7696b327f2
parent47aaaec6ea32754ad9d7f9f25e874d63439aead8
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Air: Fix mustLower() to consider volatile for a handful of instructions.

These can all potentially operate on volatile pointers.

1 files changed, 2 insertions(+), 6 deletions(-)

src/Air.zig+2-6
...@@ -1817,12 +1817,8 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {...@@ -1817,12 +1817,8 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
1817 .cmp_vector_optimized,1817 .cmp_vector_optimized,
1818 .is_null,1818 .is_null,
1819 .is_non_null,1819 .is_non_null,
1820 .is_null_ptr,
1821 .is_non_null_ptr,
1822 .is_err,1820 .is_err,
1823 .is_non_err,1821 .is_non_err,
1824 .is_err_ptr,
1825 .is_non_err_ptr,
1826 .bool_and,1822 .bool_and,
1827 .bool_or,1823 .bool_or,
1828 .fptrunc,1824 .fptrunc,
...@@ -1835,7 +1831,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {...@@ -1835,7 +1831,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
1835 .unwrap_errunion_payload,1831 .unwrap_errunion_payload,
1836 .unwrap_errunion_err,1832 .unwrap_errunion_err,
1837 .unwrap_errunion_payload_ptr,1833 .unwrap_errunion_payload_ptr,
1838 .unwrap_errunion_err_ptr,
1839 .wrap_errunion_payload,1834 .wrap_errunion_payload,
1840 .wrap_errunion_err,1835 .wrap_errunion_err,
1841 .struct_field_ptr,1836 .struct_field_ptr,
...@@ -1880,7 +1875,8 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {...@@ -1880,7 +1875,8 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
1880 .work_group_id,1875 .work_group_id,
1881 => false,1876 => false,
18821877
1883 .load => air.typeOf(data.ty_op.operand, ip).isVolatilePtrIp(ip),1878 .is_non_null_ptr, .is_null_ptr, .is_non_err_ptr, .is_err_ptr => air.typeOf(data.un_op, ip).isVolatilePtrIp(ip),
1879 .load, .unwrap_errunion_err_ptr => air.typeOf(data.ty_op.operand, ip).isVolatilePtrIp(ip),
1884 .slice_elem_val, .ptr_elem_val => air.typeOf(data.bin_op.lhs, ip).isVolatilePtrIp(ip),1880 .slice_elem_val, .ptr_elem_val => air.typeOf(data.bin_op.lhs, ip).isVolatilePtrIp(ip),
1885 .atomic_load => switch (data.atomic_load.order) {1881 .atomic_load => switch (data.atomic_load.order) {
1886 .unordered, .monotonic => air.typeOf(data.atomic_load.ptr, ip).isVolatilePtrIp(ip),1882 .unordered, .monotonic => air.typeOf(data.atomic_load.ptr, ip).isVolatilePtrIp(ip),