diff options
author | Eli Friedman <efriedma@quicinc.com> | 2020-04-06 17:03:49 -0700 |
---|---|---|
committer | Eli Friedman <efriedma@quicinc.com> | 2020-04-06 17:03:49 -0700 |
commit | 68b03aee1a15678ab5b518148d5e75c9dc0436fd (patch) | |
tree | f839c1aad6785c8316dac773ad2033a6987af029 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | 8f2d2a7cb46572d51a7dddcf151fb202e4abeb4d (diff) | |
download | llvm-68b03aee1a15678ab5b518148d5e75c9dc0436fd.zip llvm-68b03aee1a15678ab5b518148d5e75c9dc0436fd.tar.gz llvm-68b03aee1a15678ab5b518148d5e75c9dc0436fd.tar.bz2 |
Remove SequentialType from the type heirarchy.
Now that we have scalable vectors, there's a distinction that isn't
getting captured in the original SequentialType: some vectors don't have
a known element count, so counting the number of elements doesn't make
sense.
In some cases, there's a better way to express the commonality using
other methods. If we're dealing with GEPs, there's GEP methods; if we're
dealing with a ConstantDataSequential, we can query its element type
directly.
In the relatively few remaining cases, I just decided to write out
the type checks. We're talking about relatively few places, and I think
the abstraction doesn't really carry its weight. (See thread "[RFC]
Refactor class hierarchy of VectorType in the IR" on llvmdev.)
Differential Revision: https://reviews.llvm.org/D75661
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 16d3b79..6a72ed8 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -2505,7 +2505,11 @@ Error BitcodeReader::parseConstants() { if (Record.empty()) return error("Invalid record"); - Type *EltTy = cast<SequentialType>(CurTy)->getElementType(); + Type *EltTy; + if (auto *Array = dyn_cast<ArrayType>(CurTy)) + EltTy = Array->getElementType(); + else + EltTy = cast<VectorType>(CurTy)->getElementType(); if (EltTy->isIntegerTy(8)) { SmallVector<uint8_t, 16> Elts(Record.begin(), Record.end()); if (isa<VectorType>(CurTy)) |