https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103367
--- Comment #3 from anlauf at gcc dot gnu.org --- The 'real' index 'b' is a red herring. Replacing it e.g. by an undefined 'm' generates the same backtrace. Also replacing the bad code line by integer, parameter :: y(1,2) = (x(m)%a) ! ICE-on-invalid reproduces the issue.