mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-23 19:59:57 +00:00
[SelectionDAG] Remove exit-on-error flag from test (PR27765)
The exit-on-error flag in the ARM test is necessary in order to avoid an unreachable in the DAGTypeLegalizer, when trying to expand a physical register. We can also avoid this situation by introducing a bitcast early on, where the invalid scalar-to-vector conversion is detected. We also add a test for PowerPC, which goes through a similar code path in the SelectionDAGBuilder. Fixes PR27765. Differential Revision: http://reviews.llvm.org/D21061 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272644 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7c5456b142
commit
7845b7dd45
@ -445,9 +445,11 @@ static void getCopyToParts(SelectionDAG &DAG, const SDLoc &DL, SDValue Val,
|
||||
"Failed to tile the value with PartVT!");
|
||||
|
||||
if (NumParts == 1) {
|
||||
if (PartEVT != ValueVT)
|
||||
if (PartEVT != ValueVT) {
|
||||
diagnosePossiblyInvalidConstraint(*DAG.getContext(), V,
|
||||
"scalar-to-vector conversion failed");
|
||||
Val = DAG.getNode(ISD::BITCAST, DL, PartVT, Val);
|
||||
}
|
||||
|
||||
Parts[0] = Val;
|
||||
return;
|
||||
|
@ -1,10 +1,11 @@
|
||||
; RUN: not llc -mtriple=arm-eabi -mcpu=cortex-a8 -exit-on-error %s -o - 2>&1 | FileCheck %s
|
||||
; RUN: not llc -mtriple=arm-eabi -mcpu=cortex-a8 %s -o - 2>&1 | FileCheck %s
|
||||
|
||||
; Check for error message:
|
||||
; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type
|
||||
; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type
|
||||
|
||||
define hidden void @f(i32* %corr, i32 %order) nounwind ssp {
|
||||
tail call void asm sideeffect "vst1.s32 { ${1:q}, ${2:q} }, [$0]", "r,{q0},{q1}"(i32* %corr, <2 x i64>* undef, <2 x i64>* undef) nounwind, !srcloc !0
|
||||
tail call void asm sideeffect "vst1.s32 { ${1:q}, ${2:q} }, [$0]", "r,{q0},{q1}"(i32* %corr, <2 x i64>* undef, i32 %order) nounwind, !srcloc !0
|
||||
ret void
|
||||
}
|
||||
|
||||
|
14
test/CodeGen/PowerPC/inline-asm-scalar-to-vector-error.ll
Normal file
14
test/CodeGen/PowerPC/inline-asm-scalar-to-vector-error.ll
Normal file
@ -0,0 +1,14 @@
|
||||
; RUN: not llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8a -mattr=+altivec %s -o - 2>&1 | FileCheck %s
|
||||
|
||||
define hidden void @f(i32 %x) {
|
||||
; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type
|
||||
tail call void asm sideeffect "nop", "{v1}"(i32 %x) nounwind
|
||||
|
||||
; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type
|
||||
tail call void asm sideeffect "nop", "{vsl1}"(i32 %x) nounwind
|
||||
|
||||
; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type
|
||||
tail call void asm sideeffect "nop", "{vsh1}"(i32 %x) nounwind
|
||||
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user