Commit bfd5f9f5 by Alexandre Oliva Committed by Alexandre Oliva

re PR debug/50826 (bootstrap on 64 bit pa broken by r180194, ICE in mem_loc_descriptor)

PR debug/50826
* var-tracking.c (rtx_debug_expr_p): New.
(use_type): Don't use debug exprs to track non-VTA variables.

From-SVN: r180525
parent 1cc17820
2011-10-26 Alexandre Oliva <aoliva@redhat.com>
PR debug/50826
* var-tracking.c (rtx_debug_expr_p): New.
(use_type): Don't use debug exprs to track non-VTA variables.
2011-10-26 Jeff Law <law@redhat.com> 2011-10-26 Jeff Law <law@redhat.com>
* doc/invoke.texi (sink-frequency-threshold): Document. * doc/invoke.texi (sink-frequency-threshold): Document.
...@@ -4907,6 +4907,18 @@ replace_expr_with_values (rtx loc) ...@@ -4907,6 +4907,18 @@ replace_expr_with_values (rtx loc)
return cselib_subst_to_values (loc, VOIDmode); return cselib_subst_to_values (loc, VOIDmode);
} }
/* Return true if *X is a DEBUG_EXPR. Usable as an argument to
for_each_rtx to tell whether there are any DEBUG_EXPRs within
RTX. */
static int
rtx_debug_expr_p (rtx *x, void *data ATTRIBUTE_UNUSED)
{
rtx loc = *x;
return GET_CODE (loc) == DEBUG_EXPR;
}
/* Determine what kind of micro operation to choose for a USE. Return /* Determine what kind of micro operation to choose for a USE. Return
MO_CLOBBER if no micro operation is to be generated. */ MO_CLOBBER if no micro operation is to be generated. */
...@@ -4988,7 +5000,13 @@ use_type (rtx loc, struct count_use_info *cui, enum machine_mode *modep) ...@@ -4988,7 +5000,13 @@ use_type (rtx loc, struct count_use_info *cui, enum machine_mode *modep)
else if (target_for_debug_bind (var_debug_decl (expr))) else if (target_for_debug_bind (var_debug_decl (expr)))
return MO_CLOBBER; return MO_CLOBBER;
else if (track_loc_p (loc, expr, INT_MEM_OFFSET (loc), else if (track_loc_p (loc, expr, INT_MEM_OFFSET (loc),
false, modep, NULL)) false, modep, NULL)
/* Multi-part variables shouldn't refer to one-part
variable names such as VALUEs (never happens) or
DEBUG_EXPRs (only happens in the presence of debug
insns). */
&& (!MAY_HAVE_DEBUG_INSNS
|| !for_each_rtx (&XEXP (loc, 0), rtx_debug_expr_p, NULL)))
return MO_USE; return MO_USE;
else else
return MO_CLOBBER; return MO_CLOBBER;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment