var-tracking.c (var_debug_decl): Save DECL_DEBUG_EXPR value in a temporary instead of invoking the macro...

* var-tracking.c (var_debug_decl): Save DECL_DEBUG_EXPR value
	in a temporary instead of invoking the macro multiple times.
	(track_expr_p): Likewise.

From-SVN: r159058
This commit is contained in:
Jakub Jelinek 2010-05-05 11:25:01 +02:00 committed by Jakub Jelinek
parent 371b334e65
commit dbb2a2cba8
2 changed files with 16 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2010-05-05 Jakub Jelinek <jakub@redhat.com>
* var-tracking.c (var_debug_decl): Save DECL_DEBUG_EXPR value
in a temporary instead of invoking the macro multiple times.
(track_expr_p): Likewise.
2010-05-04 Neil Vachharajani <nvachhar@google.com>
* doc/invoke.texi (-Wcoverage-mismatch): Updated documentation as

View File

@ -1573,9 +1573,12 @@ static inline tree
var_debug_decl (tree decl)
{
if (decl && DECL_P (decl)
&& DECL_DEBUG_EXPR_IS_FROM (decl) && DECL_DEBUG_EXPR (decl)
&& DECL_P (DECL_DEBUG_EXPR (decl)))
decl = DECL_DEBUG_EXPR (decl);
&& DECL_DEBUG_EXPR_IS_FROM (decl))
{
tree debugdecl = DECL_DEBUG_EXPR (decl);
if (debugdecl && DECL_P (debugdecl))
decl = debugdecl;
}
return decl;
}
@ -4497,12 +4500,14 @@ track_expr_p (tree expr, bool need_rtl)
don't need to track this expression if the ultimate declaration is
ignored. */
realdecl = expr;
if (DECL_DEBUG_EXPR_IS_FROM (realdecl) && DECL_DEBUG_EXPR (realdecl))
if (DECL_DEBUG_EXPR_IS_FROM (realdecl))
{
realdecl = DECL_DEBUG_EXPR (realdecl);
if (realdecl == NULL_TREE)
realdecl = expr;
/* ??? We don't yet know how to emit DW_OP_piece for variable
that has been SRA'ed. */
if (!DECL_P (realdecl))
else if (!DECL_P (realdecl))
return 0;
}