RFC: PATCH: PR gas/12049: Unnecessary relaxation
H.J. Lu
hjl.tools@gmail.com
Mon Oct 18 14:06:00 GMT 2010
On Mon, Oct 18, 2010 at 6:48 AM, Alan Modra <amodra@gmail.com> wrote:
> On Mon, Oct 18, 2010 at 06:25:41AM -0700, H.J. Lu wrote:
>> 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:
>> >>> 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
>
> You didn't try very hard. This patch of course needs to touch all the
> other md_relax_tables too.
>
> Index: gas/as.h
> ===================================================================
> RCS file: /cvs/src/src/gas/as.h,v
> retrieving revision 1.68
> diff -u -p -r1.68 as.h
> --- gas/as.h 3 Jul 2010 20:52:24 -0000 1.68
> +++ gas/as.h 18 Oct 2010 13:29:10 -0000
> @@ -323,6 +323,8 @@ struct relax_type
>
> /* Next longer relax-state. 0 means there is no 'next' relax-state. */
> relax_substateT rlx_more;
> + /* Next smaller relax-state. -1 means there is no 'next' relax-state. */
> + relax_substateT rlx_less;
> };
>
I tried your patch on
.fill 56, 1, 0x90
jne .LBB0_43
.fill 10, 1, 0x90
jne .LBB0_43
.fill 5, 1, 0x90
.align 16, 0x90
.fill 118, 1, 0x58
.LBB0_43:
nop
I got
38: 0f 85 98 00 00 00 jne 0xd6
48: 0f 85 88 00 00 00 jne 0xd6
My patch generates:
38: 0f 85 88 00 00 00 jne 0xc6
48: 75 7c jne 0xc6
--
H.J.
More information about the Binutils
mailing list