This occurs when the component is part of a discriminated type and its
offset depends on a discriminant, the problem being that the front-end
generates an incomplete Bit_Position attribute reference.
gcc/ada/
* exp_pakd.adb (Get_Base_And_Bit_Offset): Use the full component
reference instead of just the selector name for 'Bit_Position.
-- We build up an expression serially that has the form
- -- linear-subscript * component_size for each array reference
- -- + field'Bit_Position for each record field
+ -- linear-subscript * component_size for each array component ref
+ -- + pref.component'Bit_Position for each record component ref
-- + ...
loop
elsif Nkind (Base) = N_Selected_Component then
Term :=
Make_Attribute_Reference (Loc,
- Prefix => Selector_Name (Base),
+ Prefix => Base,
Attribute_Name => Name_Bit_Position);
else