[IRNormalizer] Keep memory accesses in program order (#237128)
IRNormalizer can move a load past a store to the same address, changing
the value it reads. Include memory-accessing instructions in the initial
top-down traversal so memory accesses retain their relative order within
each basic block.
Alive2 (IRNormalizer load/store ordering):
Before (miscompiles 42 -> 7): https://alive2.llvm.org/ce/z/6VYPd5
After (verifies): https://alive2.llvm.org/ce/z/pY6t9g
Fixes #236128.
Assisted-by: Claude Code