Open dtcxzyw opened 1 month ago
If it's not an array, it seems to be folding in instcombine.
IC: Visiting: %1 = load float, ptr %alloc, align 4
IC: Replacing %1 = load float, ptr %alloc, align 4
with float 0.000000e+00
IC: Mod = %1 = load float, ptr %alloc, align 4
New = %1 = load float, ptr %alloc, align 4
IC: ERASE %1 = load float, ptr %alloc, align 4
ADD DEFERRED: %alloc = alloca float, align 16
ADD DEFERRED: store float 0.000000e+00, ptr %alloc, align 16
ADD: store float 0.000000e+00, ptr %alloc, align 16
ADD: %alloc = alloca float, align 16
IC: Visiting: %alloc = alloca float, align 16
IC: ERASE store float 0.000000e+00, ptr %alloc, align 16
ADD DEFERRED: %alloc = alloca float, align 16
IC: ERASE %alloc = alloca float, align 16
IC: Visiting: ret float 0.000000e+00
Also, it doesn't seem to work on arrays, regardless of type. https://godbolt.org/z/YWbafYzsd https://alive2.llvm.org/ce/z/R2VmYq
Alive2: https://alive2.llvm.org/ce/z/riEaBT
This pattern is extracted from mitsuba3:
mitsuba::Measured<float, drjit::Matrix<mitsuba::Spectrum<float, 4ul>, 4ul> >::sample
.