aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-10-26 21:54:34 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-10-26 21:54:34 -0400
commit67038661e20142907b21ab1b419c7a6ac54c6045 (patch)
tree3fe14dd0d3aba069fef6313243c41c0dfe4aa4c8 /gcc
parent439eb7764a0c430e25c41920936520b35cbd0381 (diff)
downloadgcc-67038661e20142907b21ab1b419c7a6ac54c6045.zip
gcc-67038661e20142907b21ab1b419c7a6ac54c6045.tar.gz
gcc-67038661e20142907b21ab1b419c7a6ac54c6045.tar.bz2
(expand_call): Don't trust the callee to copy a TREE_ADDRESSABLE type.
From-SVN: r10526
Diffstat (limited to 'gcc')
-rw-r--r--gcc/calls.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 536f928..ad05be4 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1043,7 +1043,8 @@ expand_call (exp, target, ignore)
/* If it's in a register, we must make a copy of it too. */
/* ??? Is this a sufficient test? Is there a better one? */
&& !(TREE_CODE (args[i].tree_value) == VAR_DECL
- && REG_P (DECL_RTL (args[i].tree_value))))
+ && REG_P (DECL_RTL (args[i].tree_value)))
+ && ! TREE_ADDRESSABLE (type))
{
args[i].tree_value = build1 (ADDR_EXPR,
build_pointer_type (type),