diff options
author | Sterling Augustine <saugustine@google.com> | 2009-08-19 16:10:46 +0000 |
---|---|---|
committer | Sterling Augustine <saugustine@google.com> | 2009-08-19 16:10:46 +0000 |
commit | 983f90e37dcf119d17395f5bc0a9173e7235e505 (patch) | |
tree | 3d4592e550bbec69fba103f4392845c2fefe426c /gas/config | |
parent | cab0c772ae2d1ffde31e4e8e60b3c2dcb1171bb7 (diff) | |
download | gdb-983f90e37dcf119d17395f5bc0a9173e7235e505.zip gdb-983f90e37dcf119d17395f5bc0a9173e7235e505.tar.gz gdb-983f90e37dcf119d17395f5bc0a9173e7235e505.tar.bz2 |
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.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-xtensa.c | 14 | ||||
-rw-r--r-- | gas/config/tc-xtensa.h | 7 |
2 files changed, 15 insertions, 6 deletions
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index caea25c..645af97 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -7460,6 +7460,7 @@ xtensa_mark_difference_of_two_symbols (void) { fragS *start; fragS *end; + fragS *walk; if (symbol_get_frag (left)->fr_address <= symbol_get_frag (right)->fr_address) @@ -7472,12 +7473,19 @@ xtensa_mark_difference_of_two_symbols (void) 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; } } } diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h index 91607af..ba613e4 100644 --- a/gas/config/tc-xtensa.h +++ b/gas/config/tc-xtensa.h @@ -263,9 +263,10 @@ struct xtensa_frag_type 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; }; |