This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: [PATCH] If using branch likelies in MIPS sync code fill the delay slot with a nop


On Tue, 18 Nov 2014, Andrew Bennett wrote:

> Produces (for the atomic operation):
> 
>        .set    noat
>         sync
> 1:
>         ll      $3,0($5)
>         and     $1,$3,$4
>         bne     $1,$7,2f
>         and     $1,$3,$6
>         or      $1,$1,$8
>         sc      $1,0($5)
>         beql    $1,$0,1b
>         nop
>         nop
>         sync
> 2:
>         .set    at

 With a quick look at `mips_process_sync_loop' it looks to me the
other NOP is produced from here:

  else if (!(required_oldval && cmp))
    mips_multi_add_insn ("nop", NULL);

-- correct?  If so, then can't you just make it:

  else if (!(required_oldval && cmp) && !TARGET_FIX_R10000)
    mips_multi_add_insn ("nop", NULL);

instead?  It appears plain and simple, and if you're concerned about it 
being unobvious to the casual reader, then add a one-line comment or 
suchlike.  It's not like TARGET_FIX_R10000 is going to imply anything 
else about branches in the future (and r6 code won't run on an R10k 
anyway).

  Maciej


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