https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87566
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> --- Created attachment 44831 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44831&action=edit Partial draft patch If I apply the attached patch (no idea whether it really makes sense, CLASS is quite confusing!), it converts to gimple but then fails because of the following. For some odd reasons the gimplfier does not like that f951 assigns a value to the digit 0 (last but one line of the "finally") ... [Otherwise, the code looks fine to me.] struct __class__STAR_1_0p * point; struct __class__STAR_1_0p class.0; class.0._data = __tmp_class_object_array_pointer->_data->p._data; class.0._vptr = __tmp_class_object_array_pointer->_data->p._vptr; ... point = &class.0; ... finally { __tmp_class_object_array_pointer->_data->p._data = class.0._data; __tmp_class_object_array_pointer->_data->p._vptr = class.0._vptr; 0 = (unsigned long) class.0._len; __tmp_class_object_array_pointer->_data->p._len = class.0._len;