From patch 4/5:
Note that in the future we should call validate_static_object_references() after dce, and dce has to be able to delete resource stores and resource loads, because shaders such as this compile (at least in 10.0.10011.16384):
...
Doing this requires to move `transform_deref_paths_into_offsets` after `dce`, which implies translating `compute_liveness` and `dce` to index paths.
Well, or we do DCE more than once; there's no harm in that :-) Note also that DCE needs liveness information to remove stores.
(We also can't delete resource stores in DCE, but I'm sure you knew that already.)