diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-28 12:21:07 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-28 12:21:07 +0000 |
commit | b7ba265505c7d538970e9b7fbf73929c8ba1197a (patch) | |
tree | 7f69598c8d9e75767d6a7fc9fd507ca3e7686a08 /gcc | |
parent | a4dae3a8299cd8c9e7781e74e6db3757e7c2427c (diff) | |
download | gcc-b7ba265505c7d538970e9b7fbf73929c8ba1197a.tar.gz |
* stor-layout.c (put_pending_size): Look for SAVE_EXPR if not at top
level; only add to pending_sizes if find it.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47415 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/stor-layout.c | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e9000e97d97..cedd190d0d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Wed Nov 28 08:21:47 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + * stor-layout.c (put_pending_size): Look for SAVE_EXPR if not at top + level; only add to pending_sizes if find it. + * langhooks.c (lhd_safe_from_p): Add ATTRIBUTE_UNUSED. * df.c (iterate_dataflow_sbitmap, iterate_dataflow_bitmap): diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index e16045f1f5a..e4d8744faf1 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -114,7 +114,15 @@ void put_pending_size (expr) tree expr; { - pending_sizes = tree_cons (NULL_TREE, expr, pending_sizes); + /* Strip any simple arithmetic from EXPR to see if it has an underlying + SAVE_EXPR. */ + while (TREE_CODE_CLASS (TREE_CODE (expr)) == '1' + || (TREE_CODE_CLASS (TREE_CODE (expr)) == '2' + && TREE_CONSTANT (TREE_OPERAND (expr, 1)))) + expr = TREE_OPERAND (expr, 0); + + if (TREE_CODE (expr) == SAVE_EXPR) + pending_sizes = tree_cons (NULL_TREE, expr, pending_sizes); } /* Put a chain of objects into the pending sizes list, which must be |