mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Debug Info: Handle vector types when extending variable live ranges.
rdar://problem/27891980
This commit is contained in:
@@ -594,11 +594,14 @@ public:
|
|||||||
if (getActiveDominancePoint() == VarDominancePoint ||
|
if (getActiveDominancePoint() == VarDominancePoint ||
|
||||||
isActiveDominancePointDominatedBy(VarDominancePoint)) {
|
isActiveDominancePointDominatedBy(VarDominancePoint)) {
|
||||||
llvm::Type *ArgTys;
|
llvm::Type *ArgTys;
|
||||||
auto *Ty = Storage->getType()->getScalarType();
|
auto *Ty = Storage->getType();
|
||||||
// Pointers and Floats are expected to fit into a register.
|
// Vectors, Pointers and Floats are expected to fit into a register.
|
||||||
if (Ty->isPointerTy() || Ty->isFloatingPointTy())
|
if (Ty->isPointerTy() || Ty->isFloatingPointTy() || Ty->isVectorTy())
|
||||||
ArgTys = { Storage->getType() };
|
ArgTys = { Ty };
|
||||||
else {
|
else {
|
||||||
|
// If this is not a scalar or vector type, we can't handle it.
|
||||||
|
if (isa<llvm::CompositeType>(Ty))
|
||||||
|
continue;
|
||||||
// The storage is guaranteed to be no larger than the register width.
|
// The storage is guaranteed to be no larger than the register width.
|
||||||
// Extend the storage so it would fit into a register.
|
// Extend the storage so it would fit into a register.
|
||||||
llvm::Type *IntTy;
|
llvm::Type *IntTy;
|
||||||
|
|||||||
Reference in New Issue
Block a user