Skip to content

Commit 74f5004

Browse files
committed
Updates to fix diagnostics and adjust to new upstream changes
More updates coming to handle additional PR review.
1 parent e5d36ff commit 74f5004

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

clang/lib/Sema/SemaHLSL.cpp

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3060,12 +3060,13 @@ void SemaHLSL::processExplicitBindingsOnDecl(VarDecl *VD) {
30603060
static bool CastInitializer(Sema &S, ASTContext &Ctx, Expr *E,
30613061
llvm::SmallVectorImpl<Expr *> &List,
30623062
llvm::SmallVectorImpl<QualType> &DestTypes) {
3063-
if (List.size() >= DestTypes.size())
3064-
return false;
3065-
InitializedEntity Entity =
3066-
InitializedEntity::InitializeParameter(Ctx, DestTypes[List.size()], false);
3067-
ExprResult Res =
3068-
S.PerformCopyInitialization(Entity, E->getBeginLoc(), E);
3063+
if (List.size() >= DestTypes.size()) {
3064+
List.push_back(E);
3065+
return true;
3066+
}
3067+
InitializedEntity Entity = InitializedEntity::InitializeParameter(
3068+
Ctx, DestTypes[List.size()], false);
3069+
ExprResult Res = S.PerformCopyInitialization(Entity, E->getBeginLoc(), E);
30693070
if (Res.isInvalid())
30703071
return false;
30713072
Expr *Init = Res.get();
@@ -3074,18 +3075,16 @@ static bool CastInitializer(Sema &S, ASTContext &Ctx, Expr *E,
30743075
}
30753076

30763077
static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
3077-
llvm::SmallVectorImpl<Expr *> &List,
3078-
llvm::SmallVectorImpl<QualType> &DestTypes,
3079-
bool &ExcessInits) {
3080-
if (List.size() >= DestTypes.size()) {
3078+
llvm::SmallVectorImpl<Expr *> &List,
3079+
llvm::SmallVectorImpl<QualType> &DestTypes,
3080+
bool &ExcessInits) {
3081+
if (List.size() >= DestTypes.size())
30813082
ExcessInits = true;
3082-
return;
3083-
}
30843083

30853084
// If this is an initialization list, traverse the sub initializers.
30863085
if (auto *Init = dyn_cast<InitListExpr>(E)) {
30873086
for (auto *SubInit : Init->inits())
3088-
BuildIntializerList(S, Ctx, SubInit, List, DestTypes, ExcessInits);
3087+
BuildInitializerList(S, Ctx, SubInit, List, DestTypes, ExcessInits);
30893088
return;
30903089
}
30913090

@@ -3099,10 +3098,8 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
30993098
if (auto *ATy = Ty->getAs<VectorType>()) {
31003099
uint64_t Size = ATy->getNumElements();
31013100

3102-
if (List.size() + Size > DestTypes.size()) {
3101+
if (List.size() + Size > DestTypes.size())
31033102
ExcessInits = true;
3104-
return;
3105-
}
31063103
QualType SizeTy = Ctx.getSizeType();
31073104
uint64_t SizeTySize = Ctx.getTypeSize(SizeTy);
31083105
for (uint64_t I = 0; I < Size; ++I) {
@@ -3113,8 +3110,7 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
31133110
E, E->getBeginLoc(), Idx, E->getEndLoc());
31143111
if (ElExpr.isInvalid())
31153112
return;
3116-
if (!CastInitializer(S, Ctx, ElExpr.get(), List, DestTypes))
3117-
return;
3113+
CastInitializer(S, Ctx, ElExpr.get(), List, DestTypes);
31183114
}
31193115
return;
31203116
}
@@ -3130,7 +3126,7 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
31303126
E, E->getBeginLoc(), Idx, E->getEndLoc());
31313127
if (ElExpr.isInvalid())
31323128
return;
3133-
BuildIntializerList(S, Ctx, ElExpr.get(), List, DestTypes, ExcessInits);
3129+
BuildInitializerList(S, Ctx, ElExpr.get(), List, DestTypes, ExcessInits);
31343130
}
31353131
return;
31363132
}
@@ -3143,7 +3139,7 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
31433139
E, false, E->getBeginLoc(), CXXScopeSpec(), FD, Found, NameInfo);
31443140
if (Res.isInvalid())
31453141
return;
3146-
BuildIntializerList(S, Ctx, Res.get(), List, DestTypes, ExcessInits);
3142+
BuildInitializerList(S, Ctx, Res.get(), List, DestTypes, ExcessInits);
31473143
}
31483144
}
31493145
}
@@ -3155,6 +3151,7 @@ static Expr *GenerateInitLists(ASTContext &Ctx, QualType Ty,
31553151
}
31563152
llvm::SmallVector<Expr *> Inits;
31573153
assert(!isa<MatrixType>(Ty) && "Matrix types not yet supported in HLSL");
3154+
Ty = Ty.getDesugaredType(Ctx);
31583155
if (Ty->isVectorType() || Ty->isConstantArrayType()) {
31593156
QualType ElTy;
31603157
uint64_t Size = 0;
@@ -3197,7 +3194,7 @@ bool SemaHLSL::TransformInitList(const InitializedEntity &Entity,
31973194
llvm::SmallVector<Expr *, 16> ArgExprs;
31983195
bool ExcessInits = false;
31993196
for (Expr *Arg : Init->inits())
3200-
BuildIntializerList(SemaRef, Ctx, Arg, ArgExprs, DestTypes, ExcessInits);
3197+
BuildInitializerList(SemaRef, Ctx, Arg, ArgExprs, DestTypes, ExcessInits);
32013198

32023199
if (DestTypes.size() != ArgExprs.size() || ExcessInits) {
32033200
int TooManyOrFew = ExcessInits ? 1 : 0;

0 commit comments

Comments
 (0)