]> git.feebdaed.xyz Git - 0xmirror/gcc.git/commit
cse: Check volatile memory in cselib_redundant_set_p
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 17 Dec 2025 04:18:15 +0000 (12:18 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 17 Dec 2025 23:02:48 +0000 (07:02 +0800)
commit4fbe8f4438980082de9e01b6dcd339ea1d8e5d9f
tree29c14af2c0ac43e4d81687363968cc87cbde4170
parent278eb0a081a3c61f3ce9039a30c812b3e3ea1156
cse: Check volatile memory in cselib_redundant_set_p

For h8300-elf, gcc.dg/pr114768.c fails when compiled with -O2 -msx since
cselib_redundant_set_p returns true when called with

(gdb) call debug (set)
(set (mem:HI (reg/f:SI 0 r0 [orig:21 p ] [21]) [1 *p_3(D)+0 S2 A16])
    (mem/v:HI (reg/f:SI 0 r0 [orig:21 p ] [21]) [1 MEM[(volatile int *)p_3(D)]+0 S2 A16]))
(gdb)

from reload_cse_regs.  Update cselib_redundant_set_p to return false for
volatile memory source or destination.

gcc/

PR target/122343
* cselib.cc (cselib_redundant_set_p): Return false for volatile
memory source or destination.

gcc/testsuite/

PR target/122343
* gcc.dg/pr122343-1.c: New test.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
gcc/cselib.cc
gcc/testsuite/gcc.dg/pr122343-1.c [new file with mode: 0644]