Lines Matching defs:SourceAggregate
958 auto Describe = [](std::optional<Value *> SourceAggregate) {
959 if (SourceAggregate == NotFound)
961 if (*SourceAggregate == FoundMismatch)
984 Value *SourceAggregate = EVI->getAggregateOperand();
987 if (SourceAggregate->getType() != AggTy)
993 return SourceAggregate; // AggregateDescription::Found
1002 std::optional<Value *> SourceAggregate;
1005 assert(Describe(SourceAggregate) != AggregateDescription::FoundMismatch &&
1006 "We don't store nullptr in SourceAggregate!");
1007 assert((Describe(SourceAggregate) == AggregateDescription::Found) ==
1009 "SourceAggregate should be valid after the first element,");
1027 switch (Describe(SourceAggregate)) {
1030 SourceAggregate = SourceAggregateForElement; // Record the aggregate!
1035 if (*SourceAggregateForElement != *SourceAggregate)
1043 assert(Describe(SourceAggregate) == AggregateDescription::Found &&
1045 return *SourceAggregate;
1048 std::optional<Value *> SourceAggregate;
1051 SourceAggregate = FindCommonSourceAggregate(/*UseBB=*/std::nullopt,
1053 if (Describe(SourceAggregate) != AggregateDescription::NotFound) {
1054 if (Describe(SourceAggregate) == AggregateDescription::FoundMismatch)
1057 return replaceInstUsesWith(OrigIVI, *SourceAggregate);
1119 SourceAggregate = FindCommonSourceAggregate(UseBB, Pred);
1120 if (Describe(SourceAggregate) != AggregateDescription::Found)
1122 IV.first->second = *SourceAggregate;