On 19/12/2019 17:39, Richard Sandiford wrote:
Andrew Stubbs <a...@codesourcery.com> writes:
This patch changes the operand predicates such that vector constants are
permitted during compilation. This prevents ICEs caused by the compiler
trying to emit such instructions without checking.
That sounds like a target-independent bug though. Why didn't we apply
the predicates in the normal way?
Sorry, I've just got back to checking this.
I've now confirmed that this is not a target independent bug. The code
generating the instructions is in expanders elsewhere in this machine
description. They don't attempt to fold constants, so we get an ICE when
the following vregs pass attempts to recognise the instructions.
By relaxing the predicates we can allow the compiler to fold the
instructions in the normal way, and keep the other expanders' code
straight-forward.
Andrew