diff options
author | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-12-31 08:33:11 +0000 |
---|---|---|
committer | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-12-31 08:33:11 +0000 |
commit | a69485e8e2c7f28f56ce5e9982b0fe7c0bc98ee9 (patch) | |
tree | 3bdb20bc356115a8f5db66fc0505f853b4e7ac6f /gcc/stor-layout.c | |
parent | a7478f118f03a4f7b1c26c393349f06e89b3c344 (diff) | |
download | gcc-a69485e8e2c7f28f56ce5e9982b0fe7c0bc98ee9.tar.gz |
(layout_record): Avoid overflow in const_size by adding into var_size instead.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@3007 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/stor-layout.c')
-rw-r--r-- | gcc/stor-layout.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index e2808020414..3d1ce08e26c 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -451,7 +451,10 @@ layout_record (rec) printed in finish_struct. */ if (dsize == 0) /* Do nothing. */; - else if (TREE_CODE (dsize) == INTEGER_CST) + else if (TREE_CODE (dsize) == INTEGER_CST + && TREE_INT_CST_HIGH (dsize) == 0 + && TREE_INT_CST_LOW (dsize) + const_size > const_size) + /* Use const_size if there's no overflow. */ const_size += TREE_INT_CST_LOW (dsize); else { |