Skip to content

Commit bbcf82b

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

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
@@ -3014,12 +3014,13 @@ void SemaHLSL::processExplicitBindingsOnDecl(VarDecl *VD) {
30143014
static bool CastInitializer(Sema &S, ASTContext &Ctx, Expr *E,
30153015
llvm::SmallVectorImpl<Expr *> &List,
30163016
llvm::SmallVectorImpl<QualType> &DestTypes) {
3017-
if (List.size() >= DestTypes.size())
3018-
return false;
3019-
InitializedEntity Entity =
3020-
InitializedEntity::InitializeParameter(Ctx, DestTypes[List.size()], false);
3021-
ExprResult Res =
3022-
S.PerformCopyInitialization(Entity, E->getBeginLoc(), E);
3017+
if (List.size() >= DestTypes.size()) {
3018+
List.push_back(E);
3019+
return true;
3020+
}
3021+
InitializedEntity Entity = InitializedEntity::InitializeParameter(
3022+
Ctx, DestTypes[List.size()], false);
3023+
ExprResult Res = S.PerformCopyInitialization(Entity, E->getBeginLoc(), E);
30233024
if (Res.isInvalid())
30243025
return false;
30253026
Expr *Init = Res.get();
@@ -3028,18 +3029,16 @@ static bool CastInitializer(Sema &S, ASTContext &Ctx, Expr *E,
30283029
}
30293030

30303031
static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
3031-
llvm::SmallVectorImpl<Expr *> &List,
3032-
llvm::SmallVectorImpl<QualType> &DestTypes,
3033-
bool &ExcessInits) {
3034-
if (List.size() >= DestTypes.size()) {
3032+
llvm::SmallVectorImpl<Expr *> &List,
3033+
llvm::SmallVectorImpl<QualType> &DestTypes,
3034+
bool &ExcessInits) {
3035+
if (List.size() >= DestTypes.size())
30353036
ExcessInits = true;
3036-
return;
3037-
}
30383037

30393038
// If this is an initialization list, traverse the sub initializers.
30403039
if (auto *Init = dyn_cast<InitListExpr>(E)) {
30413040
for (auto *SubInit : Init->inits())
3042-
BuildIntializerList(S, Ctx, SubInit, List, DestTypes, ExcessInits);
3041+
BuildInitializerList(S, Ctx, SubInit, List, DestTypes, ExcessInits);
30433042
return;
30443043
}
30453044

@@ -3053,10 +3052,8 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
30533052
if (auto *ATy = Ty->getAs<VectorType>()) {
30543053
uint64_t Size = ATy->getNumElements();
30553054

3056-
if (List.size() + Size > DestTypes.size()) {
3055+
if (List.size() + Size > DestTypes.size())
30573056
ExcessInits = true;
3058-
return;
3059-
}
30603057
QualType SizeTy = Ctx.getSizeType();
30613058
uint64_t SizeTySize = Ctx.getTypeSize(SizeTy);
30623059
for (uint64_t I = 0; I < Size; ++I) {
@@ -3067,8 +3064,7 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
30673064
E, E->getBeginLoc(), Idx, E->getEndLoc());
30683065
if (ElExpr.isInvalid())
30693066
return;
3070-
if (!CastInitializer(S, Ctx, ElExpr.get(), List, DestTypes))
3071-
return;
3067+
CastInitializer(S, Ctx, ElExpr.get(), List, DestTypes);
30723068
}
30733069
return;
30743070
}
@@ -3084,7 +3080,7 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
30843080
E, E->getBeginLoc(), Idx, E->getEndLoc());
30853081
if (ElExpr.isInvalid())
30863082
return;
3087-
BuildIntializerList(S, Ctx, ElExpr.get(), List, DestTypes, ExcessInits);
3083+
BuildInitializerList(S, Ctx, ElExpr.get(), List, DestTypes, ExcessInits);
30883084
}
30893085
return;
30903086
}
@@ -3097,7 +3093,7 @@ static void BuildInitializerList(Sema &S, ASTContext &Ctx, Expr *E,
30973093
E, false, E->getBeginLoc(), CXXScopeSpec(), FD, Found, NameInfo);
30983094
if (Res.isInvalid())
30993095
return;
3100-
BuildIntializerList(S, Ctx, Res.get(), List, DestTypes, ExcessInits);
3096+
BuildInitializerList(S, Ctx, Res.get(), List, DestTypes, ExcessInits);
31013097
}
31023098
}
31033099
}
@@ -3109,6 +3105,7 @@ static Expr *GenerateInitLists(ASTContext &Ctx, QualType Ty,
31093105
}
31103106
llvm::SmallVector<Expr *> Inits;
31113107
assert(!isa<MatrixType>(Ty) && "Matrix types not yet supported in HLSL");
3108+
Ty = Ty.getDesugaredType(Ctx);
31123109
if (Ty->isVectorType() || Ty->isConstantArrayType()) {
31133110
QualType ElTy;
31143111
uint64_t Size = 0;
@@ -3151,7 +3148,7 @@ bool SemaHLSL::TransformInitList(const InitializedEntity &Entity,
31513148
llvm::SmallVector<Expr *, 16> ArgExprs;
31523149
bool ExcessInits = false;
31533150
for (Expr *Arg : Init->inits())
3154-
BuildIntializerList(SemaRef, Ctx, Arg, ArgExprs, DestTypes, ExcessInits);
3151+
BuildInitializerList(SemaRef, Ctx, Arg, ArgExprs, DestTypes, ExcessInits);
31553152

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

0 commit comments

Comments
 (0)