diff options
author | Olivier Hainque <hainque@adacore.com> | 2005-12-15 13:09:41 +0000 |
---|---|---|
committer | Olivier Hainque <hainque@gcc.gnu.org> | 2005-12-15 13:09:41 +0000 |
commit | b606b65c4498e78791f0d4eb2d09847b43a7fd55 (patch) | |
tree | 4956b58cc74e48cadbe7195d684ca9abc38cd870 /gcc/stor-layout.c | |
parent | 9286af9721c6482504a91ee42f2139322878df73 (diff) | |
download | gcc-b606b65c4498e78791f0d4eb2d09847b43a7fd55.tar.gz |
stor-layout.c (layout_type): Don't complain about a too small an array element type size compared to its...
* stor-layout.c (layout_type): Don't complain about a too small
an array element type size compared to its alignment when the
size overflows.
From-SVN: r108575
Diffstat (limited to 'gcc/stor-layout.c')
-rw-r--r-- | gcc/stor-layout.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 54ab5ac14a5..b4e9ad1072f 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -1816,8 +1816,13 @@ layout_type (tree type) TYPE_MODE (type) = BLKmode; } } + /* When the element size is constant, check that it is at least as + large as the element alignment. */ if (TYPE_SIZE_UNIT (element) && TREE_CODE (TYPE_SIZE_UNIT (element)) == INTEGER_CST + /* If TYPE_SIZE_UNIT overflowed, then it is certainly larger than + TYPE_ALIGN_UNIT. */ + && !TREE_CONSTANT_OVERFLOW (TYPE_SIZE_UNIT (element)) && !integer_zerop (TYPE_SIZE_UNIT (element)) && compare_tree_int (TYPE_SIZE_UNIT (element), TYPE_ALIGN_UNIT (element)) < 0) |