Interprocedural SROA missing dynamic constant substitution
Interprocedural SROA does not subistitute dynamic constants when generating zero constants, resulting in type errors for the following program:
fn test<x, y : usize>(a : i32[x, y]) -> (i32[x, y], i32[x,y]) {
let b : i32[x,y] = a;
return (a, b);
}
fn main<x, y, z : usize>() -> i32[y, z] {
let n : i32[y, z];
let res = test::<y, z>(n);
return res.1;
}