[PATCH] PR63404, gcc 5 miscompiles linux block layer

Jiong Wang jiong.wang@arm.com
Mon Sep 29 18:12:00 GMT 2014


it's exposed by linux kernel for x86.

the root cause is current "single_set" will ignore CLOBBER & USE,
while we need to take them into account when handling shrink-wrap.

this patch add one parameter to single_set_2 to support return
NULL_RTX if we want to remove any side-effect. add a new helper function
"single_set_no_clobber_use" added.

pass x86-64 bootstrap & check-gcc/g++, also manually checked ths issue
reported at 63404 is gone away.

also no regression on aarch64-none-elf regression test.

comments?

thanks.

2014-09-26  Jiong Wang  <jiong.wang@arm.com>

         * rtl.h (single_set_no_clobber_use): New function.
         (single_set_2): New parameter "fail_on_clobber_use".
         (single_set): Likewise.
         * config/ia64/ia64.c (ia64_single_set): Likewise.
         * rtlanal.c (single_set_2): Return NULL_RTX if fail_on_clobber_use be true.
         * shrink-wrap.c (move_insn_for_shrink_wrap): Use single_set_no_clobber_use.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: single-set.patch
Type: text/x-patch
Size: 2381 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20140929/feba6c6a/attachment.bin>


More information about the Gcc-patches mailing list