diff options
author | Bob Wilson <bob.wilson@acm.org> | 2007-06-19 19:08:37 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@acm.org> | 2007-06-19 19:08:37 +0000 |
commit | c48aaca0bad0a8f61e46ff5c81045d5f6e79bb5a (patch) | |
tree | cc4c5196d7efe4aa60bce01d101031ee54c04947 /gas | |
parent | 7f5c84d395320e610b6cf45e1adfe97ba3122131 (diff) | |
download | binutils-c48aaca0bad0a8f61e46ff5c81045d5f6e79bb5a.zip binutils-c48aaca0bad0a8f61e46ff5c81045d5f6e79bb5a.tar.gz binutils-c48aaca0bad0a8f61e46ff5c81045d5f6e79bb5a.tar.bz2 |
* 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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 9 | ||||
-rw-r--r-- | gas/config/tc-xtensa.c | 8 | ||||
-rw-r--r-- | gas/config/tc-xtensa.h | 4 |
3 files changed, 15 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index a418e70..53850c6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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 diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index 5ed33a8..7011a17 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -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. */ diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h index 71481a9..251105e 100644 --- a/gas/config/tc-xtensa.h +++ b/gas/config/tc-xtensa.h @@ -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 |