mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-16 08:29:43 +00:00
Fix an overly aggressive assertion in getCopyFromPartsVector.
The assertion in getCopyFromPartsVector assumed that the vector 'part' must match the type of argument (arguments are potentially split into multiple parts). However, in some cases the targets return a 'part' of the right size but with a different type. We already handle this case correctly later on and generate a bitcast. This commit just makes sure that we are actually checking the property that we care about. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241312 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c3d9cd3f73
commit
6890be345e
@ -261,8 +261,9 @@ static SDValue getCopyFromPartsVector(SelectionDAG &DAG, SDLoc DL,
|
||||
assert(NumRegs == NumParts && "Part count doesn't match vector breakdown!");
|
||||
NumParts = NumRegs; // Silence a compiler warning.
|
||||
assert(RegisterVT == PartVT && "Part type doesn't match vector breakdown!");
|
||||
assert(RegisterVT == Parts[0].getSimpleValueType() &&
|
||||
"Part type doesn't match part!");
|
||||
assert(RegisterVT.getSizeInBits() ==
|
||||
Parts[0].getSimpleValueType().getSizeInBits() &&
|
||||
"Part type sizes don't match!");
|
||||
|
||||
// Assemble the parts into intermediate operands.
|
||||
SmallVector<SDValue, 8> Ops(NumIntermediates);
|
||||
|
18
test/CodeGen/AArch64/aarch-multipart.ll
Normal file
18
test/CodeGen/AArch64/aarch-multipart.ll
Normal file
@ -0,0 +1,18 @@
|
||||
; RUN: llc < %s -o - | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
|
||||
target triple = "arm64-apple-os"
|
||||
|
||||
declare <4 x double> @user_func(<4 x double>) #1
|
||||
|
||||
; Make sure we are not crashing on this code.
|
||||
; CHECK-LABEL: caller_function
|
||||
; CHECK: ret
|
||||
define void @caller_function(<4 x double>, <4 x double>, <4 x double>, <4 x double>, <4 x double>) #1 {
|
||||
entry:
|
||||
%r = call <4 x double> @user_func(<4 x double> %4)
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #1 = { nounwind readnone }
|
||||
|
Loading…
Reference in New Issue
Block a user