[RFC] Fix PR rtl-optimization/59461
Uros Bizjak
ubizjak@gmail.com
Sun Nov 20 21:00:00 GMT 2016
>> This also eliminate quite a few zero-extensions in the compile.exp testsuite
>> at -O2 on the SPARC. Tested on x86-64/Linux and SPARC/Solaris.
>>
>>
>> 2016-11-07 Eric Botcazou <ebotcazou@adacore.com>
>>
>> PR rtl-optimization/59461
>> * doc/rtl.texi (paradoxical subregs): Add missing word.
>> * combine.c (reg_nonzero_bits_for_combine): Do not discard results
>> in modes with precision larger than that of last_set_mode.
>> * rtlanal.c (nonzero_bits1) <SUBREG>: If WORD_REGISTER_OPERATIONS is
>> set and LOAD_EXTEND_OP is appropriate, propagate results from inner
>> REGs to paradoxical SUBREGs.
>> (num_sign_bit_copies1) <SUBREG>: Likewise. Check that the mode is not
>> larger than a word before invoking LOAD_EXTEND_OP on it.
>
> I have installed it after testing on ARM/EABI and IA-64/Linux.
Just a heads-up for now, the above patch introduced following
testsuite failures on Alpha [1]:
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-1.c -O2 execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-1.c -O3 -g execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-1.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-1.c -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-2.c -O2 execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-2.c -O3 -g execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-2.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none execution test
FAIL: gcc.dg/atomic/stdatomic-compare-exchange-2.c -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects execution test
On a first look, it looks that something is wrong with sign-extensions.
I will try to look into this a bit more.
[1] https://gcc.gnu.org/ml/gcc-testresults/2016-11/msg02277.html
Uros.
More information about the Gcc-patches
mailing list