> I'm not really sure where exactly the bug is, because I'm not
> quite sure if pointer types actually *should* be byte swapped.
> 
> On the one hand, the typical use case of scalar_storage_order
> is to simplify accessing binary data (read from a file or the
> network) that was generated on a "foreign" architecture that
> uses a different byte order.  Those use cases are unlikely
> to involve any pointer types, since pointer values from a
> foreign system are typically not usable on the current
> system anyway.
> 
> On the other hand, even the name of the attribute specifically
> refers to *scalar* types, and the C standard does classsify
> pointer types amongst the scalar type.  So maybe this was
> originally intended?

I don't think so, the feature was first implemented for Ada and, in Ada, 
pointer types (called access types) are *not* scalar types.  So this indeed 
looks like a small oversight in the implementation.

> Any comments or suggestions on what to do here?

I'm going to conduct some testing in Ada but, barring unexpected fallout, I 
would be in favor of changing the GCC implementation.  It's presumably a 1-
line change in the reverse_storage_order_for_component_p predicate.

-- 
Eric Botcazou


Reply via email to