The following patch ICEs due to my recent change r10-6451-gb7b3378f. Since that patch, for explicit vzeroupper in the sources (when an intrinsic is used), we start with the *avx_vzeroupper_1 pattern which contains just the UNSPECV_VZEROUPPER and no sets/clobbers. The vzeroupper pass then adds some sets to those, but doesn't add clobbers and finally there is an && epilogue_completed splitter that splits this into the *avx_vzeroupper pattern which has the right number of sets/clobbers (16 on 64-bit, 8 on 32-bit) + the UNSPECV_VZEROUPPER first. The problem with this testcase on !TARGET_64BIT is that the vzeroupper pass adds 8 sets to the pattern, i.e. the maximum number, but INSN_CODE stays to be the one of the *avx_vzeroupper_1 pattern. The splitter doesn't do anything here, because it sees the number of rtxes in the PARALLEL already the right count, but during final we see that the *avx_vzeroupper_1 pattern has "#" output template and ICE that we forgot to split it. The following patch fixes it by forcing re-recognition of the insn after we make the changes to it in ix86_add_reg_usage_to_vzeroupper. Anything that will call recog_memoized later on will recog it and find out it is in this case already *avx_vzeroupper rather than *avx_vzeroupper_1. 2020-03-25 Jakub Jelinek <jakub@redhat.com> PR target/94308 * config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Set INSN_CODE (insn) to -1 when changing the pattern. * gcc.target/i386/pr94308.c: New test.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| aarch64 | Loading commit data... | |
| alpha | Loading commit data... | |
| arc | Loading commit data... | |
| arm | Loading commit data... | |
| avr | Loading commit data... | |
| bfin | Loading commit data... | |
| bpf | Loading commit data... | |
| cris | Loading commit data... | |
| csky | Loading commit data... | |
| epiphany | Loading commit data... | |
| frv | Loading commit data... | |
| h8300 | Loading commit data... | |
| hppa | Loading commit data... | |
| i386 | Loading commit data... | |
| ia64 | Loading commit data... | |
| m68k | Loading commit data... | |
| microblaze | Loading commit data... | |
| mips | Loading commit data... | |
| msp430 | Loading commit data... | |
| nds32 | Loading commit data... | |
| nios2 | Loading commit data... | |
| nvptx | Loading commit data... | |
| or1k | Loading commit data... | |
| powerpc | Loading commit data... | |
| pru | Loading commit data... | |
| riscv | Loading commit data... | |
| rl78 | Loading commit data... | |
| rx | Loading commit data... | |
| s390 | Loading commit data... | |
| sh | Loading commit data... | |
| sparc | Loading commit data... | |
| tic6x | Loading commit data... | |
| vax | Loading commit data... | |
| visium | Loading commit data... | |
| x86_64/abi | Loading commit data... | |
| xstormy16 | Loading commit data... | |
| xtensa | Loading commit data... |