| with System, System.Storage_Elements; |
| use System.Storage_Elements; |
| |
| package body Allocator_Maxalign2 is |
| |
| Max_Align : constant Storage_Offset := Standard'Maximum_Alignment; |
| |
| procedure Validate is |
| use type System.Address; |
| begin |
| if Addr mod Max_Align /= 0 then |
| raise Program_Error; |
| end if; |
| end; |
| |
| procedure Check is |
| I : Integer; |
| B : Block; |
| type Block_Access is access all Block; |
| A : Block_Access; |
| begin |
| Addr := I'Address; |
| Addr := B'Address; |
| Validate; |
| for I in 1 .. 50 loop |
| A := new Block; |
| Addr := A.all'Address; |
| Validate; |
| end loop; |
| |
| end; |
| |
| end; |