diff options
| author | John Brawn <john.brawn@arm.com> | 2018-11-22 11:45:23 +0000 |
|---|---|---|
| committer | John Brawn <john.brawn@arm.com> | 2018-11-22 11:45:23 +0000 |
| commit | d6e0ebea1054f6026ae4830f04a66eda9460572c (patch) | |
| tree | f888de3edae8f7c633d1601024577cd2eeade1d1 /llvm/tools/llvm-mca/include/Instruction.h | |
| parent | 94a16cb6111c0e10681f2047e043ff19882473e0 (diff) | |
| download | bcm5719-llvm-d6e0ebea1054f6026ae4830f04a66eda9460572c.tar.gz bcm5719-llvm-d6e0ebea1054f6026ae4830f04a66eda9460572c.zip | |
[AArch64] Fix SelectionDAG infinite loop for v1i64 SCALAR_TO_VECTOR
A consequence of r347274 is that SCALAR_TO_VECTOR can be converted into
BUILD_VECTOR by SimplifyDemandedBits, but LowerBUILD_VECTOR can turn
BUILD_VECTOR into SCALAR_TO_VECTOR so we get an infinite loop.
Fix this by making LowerBUILD_VECTOR not do this transformation for those
vectors that would get transformed back, i.e. BUILD_VECTOR of a single-element
constant vector. Doing that means we get a DUP, which we then need to recognise
in ISel as a copy.
llvm-svn: 347456
Diffstat (limited to 'llvm/tools/llvm-mca/include/Instruction.h')
0 files changed, 0 insertions, 0 deletions

