3030#include " llvm/IR/Dominators.h"
3131#include " llvm/IR/Function.h"
3232#include " llvm/IR/IRBuilder.h"
33+ #include " llvm/IR/Instructions.h"
3334#include " llvm/IR/PatternMatch.h"
3435#include " llvm/Support/CommandLine.h"
3536#include " llvm/Transforms/Utils/Local.h"
@@ -3714,7 +3715,7 @@ bool VectorCombine::shrinkLoadForShuffles(Instruction &I) {
37143715 using IndexRange = std::pair<int , int >;
37153716 auto GetIndexRangeInShuffles = [&]() -> std::optional<IndexRange> {
37163717 IndexRange OutputRange = IndexRange (OldNumElements, -1 );
3717- for (auto &Use : I.uses ()) {
3718+ for (llvm::Use &Use : I.uses ()) {
37183719 // Ensure all uses match the required pattern.
37193720 User *Shuffle = Use.getUser ();
37203721 ArrayRef<int > Mask;
@@ -3743,13 +3744,13 @@ bool VectorCombine::shrinkLoadForShuffles(Instruction &I) {
37433744 };
37443745
37453746 // Get the range of vector elements used by shufflevector instructions.
3746- if (auto Indices = GetIndexRangeInShuffles ()) {
3747+ if (std::optional<IndexRange> Indices = GetIndexRangeInShuffles ()) {
37473748 unsigned const NewNumElements = Indices->second + 1u ;
37483749
37493750 // If the range of vector elements is smaller than the full load, attempt
37503751 // to create a smaller load.
37513752 if (NewNumElements < OldNumElements) {
3752- auto Builder = IRBuilder (&I);
3753+ IRBuilder Builder (&I);
37533754 Builder.SetCurrentDebugLocation (I.getDebugLoc ());
37543755
37553756 // Calculate costs of old and new ops.
@@ -3765,17 +3766,17 @@ bool VectorCombine::shrinkLoadForShuffles(Instruction &I) {
37653766 OldLoad->getPointerAddressSpace (), CostKind);
37663767
37673768 using UseEntry = std::pair<ShuffleVectorInst *, std::vector<int >>;
3768- auto NewUses = SmallVector<UseEntry, 4u >() ;
3769- auto SizeDiff = OldNumElements - NewNumElements;
3769+ SmallVector<UseEntry, 4u > NewUses ;
3770+ unsigned const SizeDiff = OldNumElements - NewNumElements;
37703771
3771- for (auto &Use : I.uses ()) {
3772+ for (llvm::Use &Use : I.uses ()) {
37723773 auto *Shuffle = cast<ShuffleVectorInst>(Use.getUser ());
3773- auto OldMask = Shuffle->getShuffleMask ();
3774+ ArrayRef< int > OldMask = Shuffle->getShuffleMask ();
37743775
37753776 // Create entry for new use.
37763777 NewUses.push_back ({Shuffle, {}});
3777- auto &NewMask = NewUses.back ().second ;
3778- for (auto Index : OldMask)
3778+ std::vector< int > &NewMask = NewUses.back ().second ;
3779+ for (int Index : OldMask)
37793780 NewMask.push_back (Index >= static_cast <int >(OldNumElements)
37803781 ? Index - SizeDiff
37813782 : Index);
@@ -3796,13 +3797,13 @@ bool VectorCombine::shrinkLoadForShuffles(Instruction &I) {
37963797 NewLoad->copyMetadata (I);
37973798
37983799 // Replace all uses.
3799- for (auto &Use : NewUses) {
3800- auto *Shuffle = Use.first ;
3801- auto &NewMask = Use.second ;
3800+ for (UseEntry &Use : NewUses) {
3801+ ShuffleVectorInst *Shuffle = Use.first ;
3802+ std::vector< int > &NewMask = Use.second ;
38023803
38033804 Builder.SetInsertPoint (Shuffle);
38043805 Builder.SetCurrentDebugLocation (Shuffle->getDebugLoc ());
3805- auto *NewShuffle = Builder.CreateShuffleVector (
3806+ Value *NewShuffle = Builder.CreateShuffleVector (
38063807 NewLoad, PoisonValue::get (NewLoadTy), NewMask);
38073808
38083809 replaceValue (*Shuffle, *NewShuffle);
0 commit comments