> 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