https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71240
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For non-INTEGRAL_TYPE_P guess we need to first VIEW_CONVERT_EXPR it to corresponding integral type. Though, even that looks wrong. src_stmt in this case is _4 = BIT_FIELD_REF <a_2(D), 32, 0>; and bswap_type and load_type are both unsigned int (SImode), while a_2(D) has double type. Even if a_2(D) would be some integral type, say long long, it would do the wrong thing, it throws away the bitfield ref and corresponding offset. Wonder if we just shouldn't remove the else if (TREE_CODE (src) == BIT_FIELD_REF) src = TREE_OPERAND (src, 0); lines.