* config/tc-xtensa.h (struct xtensa_frag_type): Update comment about

use of literal_frag field.
	* config/tc-xtensa.c (xtensa_mark_literal_pool_location): Record frag
	in the literal_frag field.
	(xtensa_move_literals): Use it here instead of searching.  Update
	literal_frag field with new value.
This commit is contained in:
Bob Wilson 2007-06-19 19:08:37 +00:00
parent 7f5c84d395
commit c48aaca0ba
3 changed files with 15 additions and 6 deletions

View File

@ -1,3 +1,12 @@
2007-06-19 Sterling Augustine <sterling@tensilica.com>
* config/tc-xtensa.h (struct xtensa_frag_type): Update comment about
use of literal_frag field.
* config/tc-xtensa.c (xtensa_mark_literal_pool_location): Record frag
in the literal_frag field.
(xtensa_move_literals): Use it here instead of searching. Update
literal_frag field with new value.
2007-06-14 Paul Brook <paul@codesourcery.com>
* config/tc-arm.c (do_t_mov_cmp): Handle shift by register and

View File

@ -4548,6 +4548,7 @@ xtensa_mark_literal_pool_location (void)
fixes into this frchain's fix list. */
pool_location = frag_now;
frag_now->tc_frag_data.lit_frchain = frchain_now;
frag_now->tc_frag_data.literal_frag = frag_now;
frag_variant (rs_machine_dependent, 0, 0,
RELAX_LITERAL_POOL_BEGIN, NULL, 0, NULL);
xtensa_set_frag_assembly_state (frag_now);
@ -9817,17 +9818,14 @@ xtensa_move_literals (void)
frchain_to = literal_pool->tc_frag_data.lit_frchain;
assert (frchain_to);
}
insert_after = literal_pool;
while (insert_after->fr_next->fr_subtype != RELAX_LITERAL_POOL_END)
insert_after = insert_after->fr_next;
insert_after = literal_pool->tc_frag_data.literal_frag;
dest_seg = insert_after->fr_next->tc_frag_data.lit_seg;
*frag_splice = next_frag;
search_frag->fr_next = insert_after->fr_next;
insert_after->fr_next = search_frag;
search_frag->tc_frag_data.lit_seg = dest_seg;
literal_pool->tc_frag_data.literal_frag = search_frag;
/* Now move any fixups associated with this frag to the
right section. */

View File

@ -228,7 +228,9 @@ struct xtensa_frag_type
variable points to the frag where the literal will be stored. For
literal frags, this variable points to the nearest literal pool
location frag. This literal frag will be moved to after this
location. */
location. For RELAX_LITERAL_POOL_BEGIN frags, this field points
to the frag immediately before the corresponding RELAX_LITERAL_POOL_END
frag, to make moving frags for this literal pool efficient. */
fragS *literal_frag;
/* The destination segment for literal frags. (Note that this is only