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):
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