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]

Re: [RFD] MIPS/gas: Optimisation cannot be set to 0


"Maciej W. Rozycki" <macro@mips.com> writes:
> On Sun, 11 Nov 2007, Richard Sandiford wrote:
>> Right.  There's not really any point doing it for MIPS16 code.  The only
>> kind of reordering you get is when GAS fills a delay slot that GCC didn't
>> know how to fill, so ".set noreorder" would mean "don't make this
>> function as small as you can".  That'd be a bit perverse on a target
>> where size is really the only thing that matters.  (In contrast,
>> GCC might have had good reasons to do what it did for non-MIPS16 code,
>> especially on targets like the VR413x.)
>
>  Obviously ".set noreorder" would make sense here only if GCC had 
> scheduled the delay slot itself already.

My point was that on targets with alignment-sensitive pipelines
like the VR413x's, GCC effectively schedules _all_ delay slots,
even if it leaves some unfilled which GAS thinks could be filled.
So it makes sense for the whole function to be ".set noreorder"
in that case.  In contrast, MIPS16 code is only ".set noreorder"
in cases where GCC has managed to do something useful with a
delay slot.

Richard


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]