On Tue, Oct 13, 2015 at 07:32:08PM +0200, Eric Botcazou wrote:
> > My main question about this series is - how generally useful do you
> > expect it to be? I know of some different projects that would like
> > bi-endian capability, but it looks like this series implements something
> > that is a little too limited to be of use in these cases.
>
> AdaCore has customers who have been using it for a few years. With the
> inline
> pragma and either the configuration pragma (Ada) or the switch (C/C++), you
> can use it without much code rewriting.
>
> > It looks like it comes with a nontrivial maintenance cost.
>
> Nontrivial but manageable IMO and the heavily modified parts (mostly the RTL
> expander) are "cold" these days. I suspect that less "limited" versions
> would
> be far more intrusive and less manageable.
>
> Of course I would do the maintenance (I have been doing it for a few years at
> AdaCore), except for the C++ front-end that I don't know at all; that's why
> I'm OK to drop the C++ support for now.
I haven't looked at the C++ changes, but I tend to think they mat may be
the language where this is the least useful. I expect it would be
pretty "trivial" to write some wrapper classes that use bswap in
operators so you could say things like struct { uint32_t_be x; }; and
have x stored in big endian. At which point all you are really missing
is a flag to have all struct members work that way, but rewriting all
struct members of type uint32_t to uint32_t_be should be straight
forward.
trev