+2009-08-19 Sterling Augustine <sterling@tensilica.com>
+
+ * config/tc-xtensa.h (xtensa_frag_data): Rename unused field fr_prev
+ to no_transform_end.
+ * config/tc-xtensa.c (xtensa_mark_difference_of_two_symbols): Set
+ and use no_transform_end.
+
2009-08-18 Kai Tietz <kai.tietz@onevision.com>
* config/obj-coff-seh.c: Add copyright notice.
{
fragS *start;
fragS *end;
+ fragS *walk;
if (symbol_get_frag (left)->fr_address
<= symbol_get_frag (right)->fr_address)
start = symbol_get_frag (right);
end = symbol_get_frag (left);
}
+
+ if (start->tc_frag_data.no_transform_end != NULL)
+ walk = start->tc_frag_data.no_transform_end;
+ else
+ walk = start;
do
{
- start->tc_frag_data.is_no_transform = 1;
- start = start->fr_next;
+ walk->tc_frag_data.is_no_transform = 1;
+ walk = walk->fr_next;
}
- while (start && start->fr_address < end->fr_address);
+ while (walk && walk->fr_address < end->fr_address);
+
+ start->tc_frag_data.no_transform_end = walk;
}
}
}
symbolS *slot_symbols[MAX_SLOTS];
offsetT slot_offsets[MAX_SLOTS];
- /* The global aligner needs to walk backward through the list of
- frags. This field is only valid after xtensa_end. */
- fragS *fr_prev;
+ /* When marking frags after this one in the chain as no transform,
+ cache the last one in the chain, so that we can skip to the
+ end of the chain. */
+ fragS *no_transform_end;
};