https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81803

James Cowgill <james410 at cowgill dot org.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |james410 at cowgill dot org.uk

--- Comment #1 from James Cowgill <james410 at cowgill dot org.uk> ---
Created attachment 41966
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41966&action=edit
testcase-b

Here's another testcase which is reduced a bit further using creduce. It
requires -O2 to trigger the bug (but that may be unrelated).

Compile using:
> mips64el-linux-gnuabi64-g++ -g -O2 -fstack-protector-strong -c -o test.o 
> test.c

mips64el-linux-gnuabi64-objdump -dr test.o:
>  98:   8c420000        lw      v0,0(v0)
>  9c:   0002102b        sltu    v0,zero,v0
>  a0:   afa20008        sw      v0,8(sp)
>  a4:   df990000        ld      t9,0(gp)
>                        a4: R_MIPS_CALL16       _Z19aa_policy_cache_newPiiiis
>                        a4: R_MIPS_NONE *ABS*
>                        a4: R_MIPS_NONE *ABS*
>  a8:   dfa80008        ld      a4,8(sp)
>  ac:   00003825        move    a3,zero
>  b0:   00003025        move    a2,zero
>  b4:   00002825        move    a1,zero
>  b8:   0320f809        jalr    t9
>                        b8: R_MIPS_JALR _Z19aa_policy_cache_newPiiiis
>                        b8: R_MIPS_NONE *ABS*
>                        b8: R_MIPS_NONE *ABS*

Here, the value calculated in v0 is stored to the stack in 8(sp) using sw, but
then loaded later using ld.

Reply via email to