gcc: fix strict alignment.
From the OpenBSD log: x86-64 ABI requires arrays greater than 16 bytes to be aligned to 16byte boundary. However, GCC 16-byte aligns arrays of >=16 BITS, not BYTES. This diff improves bug detectability for code which has local arrays of [16 .. 127] bits: in those cases SSP will now detect even 1-byte overflows. Obtained from: OpenBSD (CVS rev 1.4) MFC after: 1 week
This commit is contained in:
parent
c16bac236c
commit
cd85ba9385
@ -14408,7 +14408,7 @@ ix86_local_alignment (tree type, int align)
|
||||
if (AGGREGATE_TYPE_P (type)
|
||||
&& TYPE_SIZE (type)
|
||||
&& TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
|
||||
&& (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 16
|
||||
&& (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 128
|
||||
|| TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 128)
|
||||
return 128;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user