* var-tracking.c (emit_note_insn_var_location): Get the mode of
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Oct 2009 14:36:28 +0000 (14:36 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Oct 2009 14:36:28 +0000 (14:36 +0000)
a variable part from its REG, MEM or VALUE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153665 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/var-tracking.c

index d2309d5..8c9048e 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * var-tracking.c (emit_note_insn_var_location): Get the mode of
+       a variable part from its REG, MEM or VALUE.
+
 2009-10-28  Richard Guenther  <rguenther@suse.de>
 
        * gimple.c (gimple_get_alias_set): Fix comment typo.
index 9fa1921..61ce32b 100644 (file)
@@ -6416,7 +6416,7 @@ emit_note_insn_var_location (void **varp, void *data)
          continue;
        }
       loc[n_var_parts] = loc2;
-      mode = GET_MODE (loc[n_var_parts]);
+      mode = GET_MODE (var->var_part[i].loc_chain->loc);
       initialized = var->var_part[i].loc_chain->init;
       last_limit = offsets[n_var_parts] + GET_MODE_SIZE (mode);
 
@@ -6427,9 +6427,9 @@ emit_note_insn_var_location (void **varp, void *data)
          break;
       if (j < var->n_var_parts
          && wider_mode != VOIDmode
+         && mode == GET_MODE (var->var_part[j].loc_chain->loc)
          && (loc2 = vt_expand_loc (var->var_part[j].loc_chain->loc, vars))
          && GET_CODE (loc[n_var_parts]) == GET_CODE (loc2)
-         && mode == GET_MODE (loc2)
          && last_limit == var->var_part[j].offset)
        {
          rtx new_loc = NULL;