aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-05-23 19:02:07 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-05-23 19:02:07 +0200
commit9025085e6aa1f39e8e20f2f33be85bb2f2f05753 (patch)
treed7c65afce29be2b652a434429b6cf5ad21e3f269 /gcc/cfgexpand.c
parent34a061bed589449b2bf2efb42e017805bc173be7 (diff)
downloadgcc-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.c14
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;