summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaPseudoObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaPseudoObject.cpp')
-rw-r--r--clang/lib/Sema/SemaPseudoObject.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp
index 28a4d62b03e..37dd7b1e8d2 100644
--- a/clang/lib/Sema/SemaPseudoObject.cpp
+++ b/clang/lib/Sema/SemaPseudoObject.cpp
@@ -140,23 +140,19 @@ namespace {
unsigned resultIndex = gse->getResultIndex();
unsigned numAssocs = gse->getNumAssocs();
- SmallVector<Expr *, 8> assocExprs;
- SmallVector<TypeSourceInfo *, 8> assocTypes;
- assocExprs.reserve(numAssocs);
- assocTypes.reserve(numAssocs);
-
- for (const GenericSelectionExpr::Association &assoc :
- gse->associations()) {
- Expr *assocExpr = assoc.getAssociationExpr();
- if (assoc.isSelected())
- assocExpr = rebuild(assocExpr);
- assocExprs.push_back(assocExpr);
- assocTypes.push_back(assoc.getTypeSourceInfo());
+ SmallVector<Expr*, 8> assocs(numAssocs);
+ SmallVector<TypeSourceInfo*, 8> assocTypes(numAssocs);
+
+ for (unsigned i = 0; i != numAssocs; ++i) {
+ Expr *assoc = gse->getAssocExpr(i);
+ if (i == resultIndex) assoc = rebuild(assoc);
+ assocs[i] = assoc;
+ assocTypes[i] = gse->getAssocTypeSourceInfo(i);
}
return GenericSelectionExpr::Create(
S.Context, gse->getGenericLoc(), gse->getControllingExpr(),
- assocTypes, assocExprs, gse->getDefaultLoc(), gse->getRParenLoc(),
+ assocTypes, assocs, gse->getDefaultLoc(), gse->getRParenLoc(),
gse->containsUnexpandedParameterPack(), resultIndex);
}
OpenPOWER on IntegriCloud