aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-10-28 15:37:24 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-10-28 15:37:24 +0100
commit7cf720118defe3f5a2aa7dd646b562c12d81a614 (patch)
tree3560b058502484fb57b73fabe5cbe41f3cb74991
parente70545b0a5fa64ce4e5199ff4649db089a20edb3 (diff)
downloadgcc-7cf720118defe3f5a2aa7dd646b562c12d81a614.zip
gcc-7cf720118defe3f5a2aa7dd646b562c12d81a614.tar.gz
gcc-7cf720118defe3f5a2aa7dd646b562c12d81a614.tar.bz2
var-tracking.c (emit_note_insn_var_location): Don't call the second vt_expand_loc unnecessarily when...
* var-tracking.c (emit_note_insn_var_location): Don't call the second vt_expand_loc unnecessarily when location is not a register nor memory. From-SVN: r153666
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/var-tracking.c1
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c9048e..fe877c5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-28 Jakub Jelinek <jakub@redhat.com>
+
+ * var-tracking.c (emit_note_insn_var_location): Don't call the second
+ vt_expand_loc unnecessarily when location is not a register nor
+ memory.
+
2009-10-28 Richard Sandiford <rdsandiford@googlemail.com>
* var-tracking.c (emit_note_insn_var_location): Get the mode of
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 61ce32b..5cc8ced 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -6428,6 +6428,7 @@ emit_note_insn_var_location (void **varp, void *data)
if (j < var->n_var_parts
&& wider_mode != VOIDmode
&& mode == GET_MODE (var->var_part[j].loc_chain->loc)
+ && (REG_P (loc[n_var_parts]) || MEM_P (loc[n_var_parts]))
&& (loc2 = vt_expand_loc (var->var_part[j].loc_chain->loc, vars))
&& GET_CODE (loc[n_var_parts]) == GET_CODE (loc2)
&& last_limit == var->var_part[j].offset)