https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64980
--- Comment #9 from Mikael Morin <mikael at gcc dot gnu.org> --- (In reply to Bernd Edlinger from comment #8) > I will post this new patch, which combines Mikael's patch and > fixes class_41.f03 and these test cases, Actually, my patch was not supposed to be a real fix, rather a tip telling where to look at. (In reply to Bernd Edlinger from comment #8) > The call of get_d_position is now rewritten as follows: > > this.22 = VIEW_CONVERT_EXPR<struct > __class_muli_trapezium_Muli_trapezium_t_t>(node); > D.3752 = node._vptr->get_d_position (&this.22); > this.23 = VIEW_CONVERT_EXPR<struct > __class_muli_trapezium_Muli_trapezium_t_t>(node); > D.3754 = &this.23; > D.3755 = D.3754->_data->dim; > D.3756 = (integer(kind=8)) D.3755 + -1; > It seems to me that the second VIEW_CONVERT_EXPR is not necessary. If that's correct, there should be two references, one through VIEW_CONVERT_EXPR for the function call, and one without VIEW_CONVERT_EXPR to use for interface mapping (to get the resulting size).