diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-10-26 21:54:34 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-10-26 21:54:34 -0400 |
commit | 67038661e20142907b21ab1b419c7a6ac54c6045 (patch) | |
tree | 3fe14dd0d3aba069fef6313243c41c0dfe4aa4c8 /gcc | |
parent | 439eb7764a0c430e25c41920936520b35cbd0381 (diff) | |
download | gcc-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.c | 3 |
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), |