diff options
author | Richard Stallman <rms@gnu.org> | 1993-01-02 21:43:51 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-01-02 21:43:51 +0000 |
commit | 82c0ff026c37aa14ffeec831dfaac37896ebbb82 (patch) | |
tree | e4ac94aaba913d87aeee54b5e4774e39c8836370 /gcc | |
parent | b00e5f0d0f9def786b31ca998b407e09ceea3f78 (diff) | |
download | gcc-82c0ff026c37aa14ffeec831dfaac37896ebbb82.zip gcc-82c0ff026c37aa14ffeec831dfaac37896ebbb82.tar.gz gcc-82c0ff026c37aa14ffeec831dfaac37896ebbb82.tar.bz2 |
(expand_call): Don't use int_size_in_bytes for a variable-size object.
From-SVN: r3060
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/calls.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index c23fb82..c132a65 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -886,10 +886,10 @@ expand_call (exp, target, ignore) { /* We make a copy of the object and pass the address to the function being called. */ - int size = int_size_in_bytes (type); rtx copy; - if (size < 0) + if (TYPE_SIZE (type) == 0 + || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST) { /* This is a variable-sized object. Make space on the stack for it. */ @@ -908,7 +908,10 @@ expand_call (exp, target, ignore) TYPE_ALIGN (type))); } else - copy = assign_stack_temp (TYPE_MODE (type), size, 1); + { + int size = int_size_in_bytes (type); + copy = assign_stack_temp (TYPE_MODE (type), size, 1); + } store_expr (args[i].tree_value, copy, 0); |