[SVE][IR] Scalable Vector IR Type with pr42210 fix
Recommit of D32530 with a few small changes:
- Stopped recursively walking through aggregates in
the verifier, so that we don't impose too much
overhead on large modules under LTO (see PR42210).
- Changed tests to match; the errors are slightly
different since they only report the array or
struct that actually contains a scalable vector,
rather than all aggregates which contain one in
a nested member.
- Corrected an older comment
Reviewers: thakis, rengolin, sdesmalen
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D63321
llvm-svn: 363658
This commit is contained in:
@@ -1775,7 +1775,8 @@ Error BitcodeReader::parseTypeTableBody() {
|
||||
return error("Invalid type");
|
||||
ResultTy = ArrayType::get(ResultTy, Record[0]);
|
||||
break;
|
||||
case bitc::TYPE_CODE_VECTOR: // VECTOR: [numelts, eltty]
|
||||
case bitc::TYPE_CODE_VECTOR: // VECTOR: [numelts, eltty] or
|
||||
// [numelts, eltty, scalable]
|
||||
if (Record.size() < 2)
|
||||
return error("Invalid record");
|
||||
if (Record[0] == 0)
|
||||
@@ -1783,7 +1784,8 @@ Error BitcodeReader::parseTypeTableBody() {
|
||||
ResultTy = getTypeByID(Record[1]);
|
||||
if (!ResultTy || !StructType::isValidElementType(ResultTy))
|
||||
return error("Invalid type");
|
||||
ResultTy = VectorType::get(ResultTy, Record[0]);
|
||||
bool Scalable = Record.size() > 2 ? Record[2] : false;
|
||||
ResultTy = VectorType::get(ResultTy, Record[0], Scalable);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user