From 3874585e2e5521585d1733f177c25a5a0e224142 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 28 Nov 2001 12:21:07 +0000 Subject: [PATCH] stor-layout.c (put_pending_size): Look for SAVE_EXPR if not at top level; only add to pending_sizes if find it. * stor-layout.c (put_pending_size): Look for SAVE_EXPR if not at top level; only add to pending_sizes if find it. From-SVN: r47415 --- gcc/ChangeLog | 3 +++ gcc/stor-layout.c | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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 + * 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 -- 2.30.2