Introduce a collection of cross-module pass IDs, currently for only a
single pass, to allow a pass to be marked as preserved from a pass in
a different module.
The remainder of the patch fixes an issue in the AMDGPU backend where
values are uniform inside of a loop but the uses of that value outside
the loop can be divergent.