Cubes (+ cut loops) + move constants = shadow warnings
Cutting loops duplicates all assignments in the innermost loop.
for y ... {
for x ...
lhs_0 = rhs_0;
if y ...
lhs_0 = rhs_0;
}
Move constants pulls some of these out of the innermost loop and puts them in front but not out of the remainder conditional.
lhs_0 = rhs_0;
for y ... {
for x ...
...
if y ...
lhs_0 = rhs_0; // <- shadow warning occurs here
}
Ideally, we would eliminate duplicate assignments.
See Job #1195258.