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.
This commit is contained in:
Sterling Augustine 2009-08-19 16:10:46 +00:00
parent cab0c772ae
commit 983f90e37d
3 changed files with 22 additions and 6 deletions

View file

@ -1,3 +1,10 @@
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> 2009-08-18 Kai Tietz <kai.tietz@onevision.com>
* config/obj-coff-seh.c: Add copyright notice. * config/obj-coff-seh.c: Add copyright notice.

View file

@ -7460,6 +7460,7 @@ xtensa_mark_difference_of_two_symbols (void)
{ {
fragS *start; fragS *start;
fragS *end; fragS *end;
fragS *walk;
if (symbol_get_frag (left)->fr_address if (symbol_get_frag (left)->fr_address
<= symbol_get_frag (right)->fr_address) <= symbol_get_frag (right)->fr_address)
@ -7472,12 +7473,19 @@ xtensa_mark_difference_of_two_symbols (void)
start = symbol_get_frag (right); start = symbol_get_frag (right);
end = symbol_get_frag (left); 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 do
{ {
start->tc_frag_data.is_no_transform = 1; walk->tc_frag_data.is_no_transform = 1;
start = start->fr_next; 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;
} }
} }
} }

View file

@ -263,9 +263,10 @@ struct xtensa_frag_type
symbolS *slot_symbols[MAX_SLOTS]; symbolS *slot_symbols[MAX_SLOTS];
offsetT slot_offsets[MAX_SLOTS]; offsetT slot_offsets[MAX_SLOTS];
/* The global aligner needs to walk backward through the list of /* When marking frags after this one in the chain as no transform,
frags. This field is only valid after xtensa_end. */ cache the last one in the chain, so that we can skip to the
fragS *fr_prev; end of the chain. */
fragS *no_transform_end;
}; };