diff options
author | Peter Bergner <bergner@linux.ibm.com> | 2021-03-08 12:20:41 -0600 |
---|---|---|
committer | Peter Bergner <bergner@linux.ibm.com> | 2021-03-08 12:21:39 -0600 |
commit | cb25dea3ef2c7768007bffc56f0e31e1c42b44e2 (patch) | |
tree | 53110f8a8226b7d1a8606e84dc070df93114b210 /gcc/testsuite/c-c++-common/Wstringop-overflow.c | |
parent | ded6a1953dd7f43229c44e5d0d17c264338a3f4c (diff) | |
download | gcc-cb25dea3ef2c7768007bffc56f0e31e1c42b44e2.zip gcc-cb25dea3ef2c7768007bffc56f0e31e1c42b44e2.tar.gz gcc-cb25dea3ef2c7768007bffc56f0e31e1c42b44e2.tar.bz2 |
rs6000: Fix invalid splits when using Altivec style addresses [PR98959]
The rs6000_emit_le_vsx_* functions assume they are not passed an Altivec
style "& ~16" address. However, some of our expanders and splitters do
not verify we do not have an Altivec style address before calling those
functions, leading to an ICE. The solution here is to guard the expanders
and splitters to ensure we do not call them if we're given an Altivec style
address.
2021-03-08 Peter Bergner <bergner@linux.ibm.com>
gcc/
PR target/98959
* config/rs6000/rs6000.c (rs6000_emit_le_vsx_permute): Add an assert
to ensure we do not have an Altivec style address.
* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): Disable if passed
an Altivec style address.
(*vsx_le_perm_store_<mode>): Likewise.
(splitters after *vsx_le_perm_store_<mode>): Likewise.
(vsx_load_<mode>): Disable special expander if passed an Altivec
style address.
(vsx_store_<mode>): Likewise.
gcc/testsuite/
PR target/98959
* gcc.target/powerpc/pr98959.c: New test.
Diffstat (limited to 'gcc/testsuite/c-c++-common/Wstringop-overflow.c')
0 files changed, 0 insertions, 0 deletions