-- { dg-do compile } | |
package Unchecked_Union2 is | |
type Small_Int is range 0 .. 2**19 - 1; | |
type R1 (B : Boolean := True) is record | |
case B is | |
when True => Data1 : Small_Int; | |
when False => Data2 : Small_Int; | |
end case; | |
end record; | |
for R1 use record | |
Data1 at 0 range 0 .. 18; | |
Data2 at 0 range 0 .. 18; | |
end record; | |
for R1'Size use 24; | |
pragma Unchecked_Union (R1); | |
type R2 is record | |
Data : R1; | |
end record; | |
for R2 use record | |
Data at 0 range 3 .. 26; | |
end record; | |
end Unchecked_Union2; |