diff options
Diffstat (limited to 'gcc/ada/libgnat')
-rw-r--r-- | gcc/ada/libgnat/s-secsta.adb | 2 | ||||
-rw-r--r-- | gcc/ada/libgnat/s-secsta.ads | 19 |
2 files changed, 17 insertions, 4 deletions
diff --git a/gcc/ada/libgnat/s-secsta.adb b/gcc/ada/libgnat/s-secsta.adb index 0010449..7ec8462 100644 --- a/gcc/ada/libgnat/s-secsta.adb +++ b/gcc/ada/libgnat/s-secsta.adb @@ -564,7 +564,7 @@ package body System.Secondary_Stack is -------------- function Round_Up (Size : Storage_Count) return Memory_Size is - Algn_MS : constant Memory_Size := Standard'Maximum_Alignment; + Algn_MS : constant Memory_Size := Memory_Alignment; Size_MS : constant Memory_Size := Memory_Size (Size); begin diff --git a/gcc/ada/libgnat/s-secsta.ads b/gcc/ada/libgnat/s-secsta.ads index 764ae2f..d06e97f 100644 --- a/gcc/ada/libgnat/s-secsta.ads +++ b/gcc/ada/libgnat/s-secsta.ads @@ -261,10 +261,23 @@ private subtype Memory_Index is Memory_Size; -- Index into the memory storage of a single chunk + Memory_Alignment : constant := Standard'Maximum_Alignment * 2; + -- The memory alignment we will want to honor on every allocation. + -- + -- At this stage, gigi assumes we can accomodate any alignment requirement + -- there might be on the data type for which the memory gets allocated (see + -- build_call_alloc_dealloc). + -- + -- The multiplication factor is intended to account for requirements + -- by user code compiled with specific arch/cpu options such as -mavx + -- on X86[_64] targets, which Standard'Maximum_Alignment doesn't convey + -- without such compilation options. * 4 would actually be needed to + -- support -mavx512f on X86, but this would incur more annoying memory + -- consumption overheads. + type Chunk_Memory is array (Memory_Size range <>) of SSE.Storage_Element; - for Chunk_Memory'Alignment use Standard'Maximum_Alignment; - -- The memory storage of a single chunk. It utilizes maximum alignment in - -- order to guarantee efficient operations. + for Chunk_Memory'Alignment use Memory_Alignment; + -- The memory storage of a single chunk -------------- -- SS_Chunk -- |