rs6000: Fix invalid address passed to __builtin_mma_disassemble_acc [PR104923]
commitb5baf569f77e1f172061642d4d8593e1ea737add
authorPeter Bergner <bergner@linux.ibm.com>
Tue, 15 Mar 2022 13:46:47 +0000 (15 08:46 -0500)
committerPeter Bergner <bergner@linux.ibm.com>
Tue, 15 Mar 2022 13:49:47 +0000 (15 08:49 -0500)
treea2943ae9ecea3e4900671b163121c443d468d984
parentffe9c0a0d3564a6083ea6194eb3374a89c29c085
rs6000: Fix invalid address passed to __builtin_mma_disassemble_acc [PR104923]

The mma_disassemble_output_operand predicate is too lenient on the types
of addresses it will accept, leading to combine creating invalid address
that eventually lead to ICEs in LRA.  The solution is to restrict the
addresses to indirect, indexed or those valid for quad memory accesses.

2022-03-15  Peter Bergner  <bergner@linux.ibm.com>

gcc/
PR target/104923
* config/rs6000/predicates.md (mma_disassemble_output_operand): Restrict
acceptable MEM addresses.

gcc/testsuite/
PR target/104923
* gcc.target/powerpc/pr104923.c: New test.
gcc/config/rs6000/predicates.md
gcc/testsuite/gcc.target/powerpc/pr104923.c [new file with mode: 0644]