diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-05-23 19:02:07 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-05-23 19:02:07 +0200 |
commit | 9025085e6aa1f39e8e20f2f33be85bb2f2f05753 (patch) | |
tree | d7c65afce29be2b652a434429b6cf5ad21e3f269 /gcc/cfgexpand.c | |
parent | 34a061bed589449b2bf2efb42e017805bc173be7 (diff) | |
download | gcc-9025085e6aa1f39e8e20f2f33be85bb2f2f05753.zip gcc-9025085e6aa1f39e8e20f2f33be85bb2f2f05753.tar.gz gcc-9025085e6aa1f39e8e20f2f33be85bb2f2f05753.tar.bz2 |
cfgexpand.c (expand_debug_expr): For unused non-addressable parameters passed in memory prefer using...
* cfgexpand.c (expand_debug_expr): For unused non-addressable
parameters passed in memory prefer using DECL_INCOMING_RTL over
the pseudos it will be copied into.
From-SVN: r174079
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index ecf2510..b22ba71 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -3160,6 +3160,20 @@ expand_debug_expr (tree exp) ENTRY_VALUE_EXP (op0) = incoming; goto adjust_mode; } + if (incoming + && MEM_P (incoming) + && !TREE_ADDRESSABLE (SSA_NAME_VAR (exp)) + && GET_MODE (incoming) != BLKmode + && (XEXP (incoming, 0) == virtual_incoming_args_rtx + || (GET_CODE (XEXP (incoming, 0)) == PLUS + && XEXP (XEXP (incoming, 0), 0) + == virtual_incoming_args_rtx + && CONST_INT_P (XEXP (XEXP (incoming, 0), + 1))))) + { + op0 = incoming; + goto adjust_mode; + } op0 = expand_debug_expr (SSA_NAME_VAR (exp)); if (!op0) return NULL; |