diff options
author | liuhongt <hongtao.liu@intel.com> | 2021-01-18 16:55:32 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2021-01-21 13:28:59 +0800 |
commit | e711b67a9081ae84c66174a50705dc98ba993a43 (patch) | |
tree | 3cbe5c7f545a56672b983b3652e7c58762773300 /gcc/fortran/resolve.c | |
parent | b93d0e36c0a86c3d15310fe7383321ca63aeb04d (diff) | |
download | gcc-e711b67a9081ae84c66174a50705dc98ba993a43.zip gcc-e711b67a9081ae84c66174a50705dc98ba993a43.tar.gz gcc-e711b67a9081ae84c66174a50705dc98ba993a43.tar.bz2 |
Fix incorrect optimization by cprop_hardreg.
If SRC had been assigned a mode narrower than the copy, we can't
always link DEST into the chain even they have same
hard_regno_nregs(i.e. HImode/SImode in i386 backend).
i.e
kmovw %k0, %edi
vmovd %edi, %xmm2
vpshuflw $0, %xmm2, %xmm0
kmovw %k0, %r8d
kmovd %k0, %r9d
...
- movl %r9d, %r11d
+ vmovd %xmm2, %r11d
gcc/ChangeLog:
PR rtl-optimization/98694
* regcprop.c (copy_value): If SRC had been assigned a mode
narrower than the copy, we can't link DEST into the chain even
they have same hard_regno_nregs(i.e. HImode/SImode in i386
backend).
gcc/testsuite/ChangeLog:
PR rtl-optimization/98694
* gcc.target/i386/pr98694.c: New test.
Diffstat (limited to 'gcc/fortran/resolve.c')
0 files changed, 0 insertions, 0 deletions