forked from OSchip/llvm-project
Clean up usages of asserting vector getters in Type
Summary: Remove usages of asserting vector getters in Type in preparation for the VectorType refactor. The existence of these functions complicates the refactor while adding little value. Reviewers: dexonsmith, sdesmalen, efriedma Reviewed By: sdesmalen Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77274
This commit is contained in:
parent
c162bc2aed
commit
2a922da3a9
|
@ -3588,16 +3588,17 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|||
ExplicitTypeLoc,
|
||||
"explicit pointee type doesn't match operand's pointee type");
|
||||
|
||||
unsigned GEPWidth =
|
||||
BaseType->isVectorTy() ? BaseType->getVectorNumElements() : 0;
|
||||
unsigned GEPWidth = BaseType->isVectorTy()
|
||||
? cast<VectorType>(BaseType)->getNumElements()
|
||||
: 0;
|
||||
|
||||
ArrayRef<Constant *> Indices(Elts.begin() + 1, Elts.end());
|
||||
for (Constant *Val : Indices) {
|
||||
Type *ValTy = Val->getType();
|
||||
if (!ValTy->isIntOrIntVectorTy())
|
||||
return Error(ID.Loc, "getelementptr index must be an integer");
|
||||
if (ValTy->isVectorTy()) {
|
||||
unsigned ValNumEl = ValTy->getVectorNumElements();
|
||||
if (auto *ValVTy = dyn_cast<VectorType>(ValTy)) {
|
||||
unsigned ValNumEl = ValVTy->getNumElements();
|
||||
if (GEPWidth && (ValNumEl != GEPWidth))
|
||||
return Error(
|
||||
ID.Loc,
|
||||
|
@ -7233,8 +7234,9 @@ int LLParser::ParseGetElementPtr(Instruction *&Inst, PerFunctionState &PFS) {
|
|||
bool AteExtraComma = false;
|
||||
// GEP returns a vector of pointers if at least one of parameters is a vector.
|
||||
// All vector parameters should have the same vector width.
|
||||
ElementCount GEPWidth = BaseType->isVectorTy() ?
|
||||
BaseType->getVectorElementCount() : ElementCount(0, false);
|
||||
ElementCount GEPWidth = BaseType->isVectorTy()
|
||||
? cast<VectorType>(BaseType)->getElementCount()
|
||||
: ElementCount(0, false);
|
||||
|
||||
while (EatIfPresent(lltok::comma)) {
|
||||
if (Lex.getKind() == lltok::MetadataVar) {
|
||||
|
@ -7245,8 +7247,8 @@ int LLParser::ParseGetElementPtr(Instruction *&Inst, PerFunctionState &PFS) {
|
|||
if (!Val->getType()->isIntOrIntVectorTy())
|
||||
return Error(EltLoc, "getelementptr index must be an integer");
|
||||
|
||||
if (Val->getType()->isVectorTy()) {
|
||||
ElementCount ValNumEl = Val->getType()->getVectorElementCount();
|
||||
if (auto *ValVTy = dyn_cast<VectorType>(Val->getType())) {
|
||||
ElementCount ValNumEl = ValVTy->getElementCount();
|
||||
if (GEPWidth != ElementCount(0, false) && GEPWidth != ValNumEl)
|
||||
return Error(EltLoc,
|
||||
"getelementptr vector index has a wrong number of elements");
|
||||
|
|
Loading…
Reference in New Issue