> I was mainly worried about us trying to for example copy a bit-packed
> substructure like
> 
> struct A {
>   unsigned use_1_bit : 1;
>   struct B {
>     char large[100];
>   } b;
> } a, b;
> 
> where b.large[0] is at offset 1 bit of a (I believe this is possible
> with Ada, right?).

It is possible ONLY if the programmer explictly puts it there with a
record representation clause.

> If we then have the IL (no idea if we would
> consider this valid, but this is before GIMPLE):
> 
>  a.b = b.b;

... in which case the Ada front end will know that it must never generate
a reference to the entire field "b", but will instead generate a
loop to copy character-by-character.

> I have no idea how to best lower this ;)  

My feeling is to declare it invalid.  You can't have a BLKmode field
aligned at other than a byte boundary if you want to be able to access
the field as a whole.

Reply via email to