Re: Issue with pointer types marked with scalar_storage_order

Eric Botcazou
2021-05-06T14:07:59Z

> 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