Skip to content

Commit

Permalink
[llvm-link] fix IRMover returning wrong modified vector type
Browse files Browse the repository at this point in the history
Modified scalable vector types weren't correctly returned at link-time.
The previous behaviour was a FixedVectorType was constructed
when expecting a ScalableVectorType. This commit has added a regression
test which re-creates the failure as well as a fix.

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D96953
  • Loading branch information
nasherm committed Feb 22, 2021
1 parent b5b3243 commit 0327cfe
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
5 changes: 2 additions & 3 deletions llvm/lib/Linker/IRMover.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -298,10 +298,9 @@ Type *TypeMapTy::get(Type *Ty, SmallPtrSet<StructType *, 8> &Visited) {
return *Entry = ArrayType::get(ElementTypes[0],
cast<ArrayType>(Ty)->getNumElements());
case Type::ScalableVectorTyID:
// FIXME: handle scalable vectors
case Type::FixedVectorTyID:
return *Entry = FixedVectorType::get(
ElementTypes[0], cast<FixedVectorType>(Ty)->getNumElements());
return *Entry = VectorType::get(ElementTypes[0],
cast<VectorType>(Ty)->getElementCount());
case Type::PointerTyID:
return *Entry = PointerType::get(ElementTypes[0],
cast<PointerType>(Ty)->getAddressSpace());
Expand Down
4 changes: 4 additions & 0 deletions llvm/test/Linker/Inputs/fixed-vector-type-construction.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
%t = type {i32, float}
define void @foo(<4 x %t*> %x) {
ret void
}
7 changes: 7 additions & 0 deletions llvm/test/Linker/scalable-vector-type-construction.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
; RUN: llvm-link %p/Inputs/fixed-vector-type-construction.ll %s -S -o - | FileCheck %s
%t = type {i32, float}
; CHECK: define void @foo(<4 x
; CHECK; define void @bar(<vscale x 4 x
define void @bar(<vscale x 4 x %t*> %x) {
ret void
}

0 comments on commit 0327cfe

Please sign in to comment.