This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Sun, Oct 17, 2010 at 10:32 PM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Sun, Oct 17, 2010 at 8:35 PM, H.J. Lu <hjl.tools@gmail.com> wrote: >> On Sun, Oct 17, 2010 at 6:32 PM, Alan Modra <amodra@gmail.com> wrote: >>> On Sat, Oct 16, 2010 at 03:28:50PM -0700, H.J. Lu wrote: >>>> 1. Set address for each frag. >>>> 2. Relax and update address for each frag. ?For rs_machine_dependent >>>> frag, if its size grows with forward reference, update fr_address for >>>> all successive frags. >>>> 3. If stretched, goto 2. >>>> >>>> Does it make any senses? >>> >>> No it does not. ?The frag loop here is already two deep in loops (loop >>> until nothing changed this segment, and loop until nothing changed in >>> all segments). ?You've just made the innermost loop over frags >>> O(n**2). ?I think that is way too expensive. >> >> We can limit the new one to the first pass only. >> >>> A possible fix for your testcase is to allow relax_frag to shrink >>> rs_machine_dependent frags, rather than just grow them as it does at >>> the moment. >>> >> >> I tried it and it doesn't work. The problem is >> >> ? ? ? .fill 14, 1, 0x90 >> ? ? ? jmp ? ? .LBB1_23 ? <- frag 1 >> ? ? ? .fill 14, 1, 0x90 >> ? ? ? jmp ? ? .LBB1_23 ?<- frag 2 >> ? ? ? .fill 18, 1, 0x90 >> ? ? ? .align ?16, 0x90 ? ?<- frag 3 >> ? ? ? .fill 96, 1, 0x90 >> .LBB1_23: >> >> After frag 1 is grown by 4 bytes, we may not >> shrink frag 2 unless the address of frag 3 >> is adjusted first, which is what my patch does. >> > > Here is the updated patch to do it only for the first iteration. > > This patch limits it to the first iteration of the first pass. -- H.J.
Attachment:
gas-pr12049-3.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |