diff options
author | hainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-15 13:09:41 +0000 |
---|---|---|
committer | hainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-15 13:09:41 +0000 |
commit | e1b062ae95f10d7e3aa9610f524eefc24e25c96b (patch) | |
tree | 4956b58cc74e48cadbe7195d684ca9abc38cd870 | |
parent | f707ca7d6540d182cc9676280ce54ebb0c72c41b (diff) | |
download | gcc-e1b062ae95f10d7e3aa9610f524eefc24e25c96b.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108575 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/stor-layout.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 288eafef534..46d848d11a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-12-15 Olivier Hainque <hainque@adacore.com> + + * 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. + 2005-12-15 Jan Hubicka <jh@suse.cz> PR target/24969 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) |