diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-10-03 21:46:46 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-10-03 21:46:46 -0400 |
commit | 99098c669ede8d46e430a5f387d18ea3c097fb4f (patch) | |
tree | d1cff8b9d9b8dd6deba04ca9054557b585614f4a /gcc | |
parent | dec20b4baeb52647657acc42a34a8c6bdcfaee35 (diff) | |
download | gcc-99098c669ede8d46e430a5f387d18ea3c097fb4f.zip gcc-99098c669ede8d46e430a5f387d18ea3c097fb4f.tar.gz gcc-99098c669ede8d46e430a5f387d18ea3c097fb4f.tar.bz2 |
(expr_size): If the size contains a PLACEHOLDER_EXPR, surround it with
a WITH_RECORD_EXPR.
From-SVN: r5582
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/explow.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/explow.c b/gcc/explow.c index f8d4751..86726c9 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -242,8 +242,13 @@ rtx expr_size (exp) tree exp; { - return expand_expr (size_in_bytes (TREE_TYPE (exp)), - NULL_RTX, TYPE_MODE (sizetype), 0); + tree size = size_in_bytes (TREE_TYPE (exp)); + + if (TREE_CODE (size) != INTEGER_CST + && contains_placeholder_p (size)) + size = build (WITH_RECORD_EXPR, sizetype, size, exp); + + return expand_expr (size, NULL_RTX, TYPE_MODE (sizetype), 0); } /* Return a copy of X in which all memory references |