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.

Reply via email to