From 9025085e6aa1f39e8e20f2f33be85bb2f2f05753 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 23 May 2011 19:02:07 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/cfgexpand.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d46b04b630..eabc32f6cd7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-05-23 Jakub Jelinek + + * 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. + 2011-05-23 H.J. Lu PR target/47315 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index ecf2510a0f4..b22ba71375f 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; -- 2.30.2