diff options
| author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-05 09:25:01 +0000 |
|---|---|---|
| committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-05 09:25:01 +0000 |
| commit | 4e9d80c4af718debb2526e7a951447ee565bb07d (patch) | |
| tree | 4557c5bcc52cc76180e0860ccd7d40985747c3f7 | |
| parent | 35820014157910c5bf152c8f20a48d01fcff064c (diff) | |
| download | ppe42-gcc-4e9d80c4af718debb2526e7a951447ee565bb07d.tar.gz ppe42-gcc-4e9d80c4af718debb2526e7a951447ee565bb07d.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159058 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/var-tracking.c | 15 |
2 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5eed15dfe67..6d232bb7acb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 55de2092c08..040a3e7a50c 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -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; } |

