-Wmissing-field-initializers fixes

Like with the last few PRs from me, it fixes a warning that's commonly enabled in downstream projects that might want to consume glslang via FetchContent or equivalent.

It doesn't actually enable the warning, but that might be desirable.

I think I found a bug in the Spv.FromFile.cpp tests that would have been prevented had this warning been enabled all along.
I had to guess the value for the missing field, so went for the most common one in the list.
The only test case that used a different value before had an RWTexture1D, so if baseImageBinding is meaning the same kind of image as image load store in OpenGL, it would make sense that that would be the only one to need a non-zero value for the binding.

I'm a little concerned that the test wasn't previously failing with the incorrectly-assigned fields as it implies they don't make any difference, so the test might be too permissive.
This commit is contained in:
AnyOldName3 2024-02-15 18:58:13 +00:00 committed by arcady-lunarg
parent 6340ba901a
commit fb23503f12
6 changed files with 21 additions and 21 deletions

View file

@ -7336,7 +7336,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T
realFunc.addParameter(TParameter().copyParam((*function)[i])); realFunc.addParameter(TParameter().copyParam((*function)[i]));
} }
TParameter tmpP = { nullptr, &uintType }; TParameter tmpP = { nullptr, &uintType, {} };
realFunc.addParameter(TParameter().copyParam(tmpP)); realFunc.addParameter(TParameter().copyParam(tmpP));
arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true));
@ -7353,7 +7353,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T
realFunc.addParameter(TParameter().copyParam((*function)[i])); realFunc.addParameter(TParameter().copyParam((*function)[i]));
} }
TParameter tmpP = { nullptr, &uintType }; TParameter tmpP = { nullptr, &uintType, {} };
realFunc.addParameter(TParameter().copyParam(tmpP)); realFunc.addParameter(TParameter().copyParam(tmpP));
arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true));
@ -7676,7 +7676,7 @@ TIntermNode* TParseContext::vkRelaxedRemapFunctionArgument(const TSourceLoc& loc
AccessChainTraverser accessChainTraverser{}; AccessChainTraverser accessChainTraverser{};
intermTyped->traverse(&accessChainTraverser); intermTyped->traverse(&accessChainTraverser);
TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType }; TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType, {} };
param.type->shallowCopy(intermTyped->getType()); param.type->shallowCopy(intermTyped->getType());
std::vector<int> newParams = {}; std::vector<int> newParams = {};

View file

@ -494,7 +494,7 @@ function_call_header_with_parameters
} }
else else
{ {
TParameter param = { 0, new TType }; TParameter param = { 0, new TType, {} };
param.type->shallowCopy($2->getType()); param.type->shallowCopy($2->getType());
$1.function->addParameter(param); $1.function->addParameter(param);
@ -513,7 +513,7 @@ function_call_header_with_parameters
} }
else else
{ {
TParameter param = { 0, new TType }; TParameter param = { 0, new TType, {} };
param.type->shallowCopy($3->getType()); param.type->shallowCopy($3->getType());
$1.function->addParameter(param); $1.function->addParameter(param);
@ -1068,7 +1068,7 @@ parameter_declarator
} }
parseContext.reservedErrorCheck($2.loc, *$2.string); parseContext.reservedErrorCheck($2.loc, *$2.string);
TParameter param = {$2.string, new TType($1)}; TParameter param = {$2.string, new TType($1), {}};
$$.loc = $2.loc; $$.loc = $2.loc;
$$.param = param; $$.param = param;
} }
@ -1086,7 +1086,7 @@ parameter_declarator
parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes); parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes);
parseContext.reservedErrorCheck($2.loc, *$2.string); parseContext.reservedErrorCheck($2.loc, *$2.string);
TParameter param = { $2.string, type }; TParameter param = { $2.string, type, {} };
$$.loc = $2.loc; $$.loc = $2.loc;
$$.param = param; $$.param = param;
@ -1139,7 +1139,7 @@ parameter_declaration
parameter_type_specifier parameter_type_specifier
: type_specifier { : type_specifier {
TParameter param = { 0, new TType($1) }; TParameter param = { 0, new TType($1), {} };
$$.param = param; $$.param = param;
if ($1.arraySizes) if ($1.arraySizes)
parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes);

View file

@ -5467,7 +5467,7 @@ yyreduce:
} }
else else
{ {
TParameter param = { 0, new TType }; TParameter param = { 0, new TType, {} };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
(yyvsp[-1].interm).function->addParameter(param); (yyvsp[-1].interm).function->addParameter(param);
@ -5491,7 +5491,7 @@ yyreduce:
} }
else else
{ {
TParameter param = { 0, new TType }; TParameter param = { 0, new TType, {} };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
(yyvsp[-2].interm).function->addParameter(param); (yyvsp[-2].interm).function->addParameter(param);
@ -6388,7 +6388,7 @@ yyreduce:
} }
parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string);
TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type)), {}};
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param; (yyval.interm).param = param;
} }
@ -6411,7 +6411,7 @@ yyreduce:
parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes);
parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string);
TParameter param = { (yyvsp[-1].lex).string, type }; TParameter param = { (yyvsp[-1].lex).string, type, {} };
(yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param; (yyval.interm).param = param;
@ -6477,7 +6477,7 @@ yyreduce:
case 124: /* parameter_type_specifier: type_specifier */ case 124: /* parameter_type_specifier: type_specifier */
#line 1141 "MachineIndependent/glslang.y" #line 1141 "MachineIndependent/glslang.y"
{ {
TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; TParameter param = { 0, new TType((yyvsp[0].interm.type)), {} };
(yyval.interm).param = param; (yyval.interm).param = param;
if ((yyvsp[0].interm.type).arraySizes) if ((yyvsp[0].interm.type).arraySizes)
parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);

View file

@ -85,7 +85,7 @@ public:
addGlobalReference(base->getAccessName()); addGlobalReference(base->getAccessName());
if (target) { if (target) {
TVarEntryInfo ent = {base->getId(), base, ! traverseAll}; TVarEntryInfo ent = {base->getId(), base, ! traverseAll, {}, {}, {}, {}, {}, {}, {}};
ent.stage = intermediate.getStage(); ent.stage = intermediate.getStage();
TVarLiveMap::iterator at = target->find( TVarLiveMap::iterator at = target->find(
ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById());
@ -124,7 +124,7 @@ public:
else else
return; return;
TVarEntryInfo ent = { base->getId() }; TVarEntryInfo ent = { base->getId(), {}, {}, {}, {}, {}, {}, {}, {}, {} };
// Fix a defect, when block has no instance name, we need to find its block name // Fix a defect, when block has no instance name, we need to find its block name
TVarLiveMap::const_iterator at = source->find(base->getAccessName()); TVarLiveMap::const_iterator at = source->find(base->getAccessName());
if (at == source->end()) if (at == source->end())

View file

@ -763,7 +763,7 @@ INSTANTIATE_TEST_SUITE_P(
{ "spv.register.autoassign.rangetest.frag", "main", { "spv.register.autoassign.rangetest.frag", "main",
glslang::TQualifier::layoutBindingEnd-2, glslang::TQualifier::layoutBindingEnd-2,
glslang::TQualifier::layoutBindingEnd+5, glslang::TQualifier::layoutBindingEnd+5,
20, 30, true, false }, 0, 20, 30, true, false },
}), }),
FileNameAsCustomTestSuffixIoMap FileNameAsCustomTestSuffixIoMap
); );

View file

@ -290,11 +290,11 @@ TEST_P(VulkanRelaxedTest, FromFile)
INSTANTIATE_TEST_SUITE_P( INSTANTIATE_TEST_SUITE_P(
Glsl, VulkanRelaxedTest, Glsl, VulkanRelaxedTest,
::testing::ValuesIn(std::vector<vkRelaxedData>({ ::testing::ValuesIn(std::vector<vkRelaxedData>({
{{"vk.relaxed.frag"}}, {{"vk.relaxed.frag"}, {}},
{{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}}, {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}, {}},
{{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}}, {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}, {}},
{{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}}, {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}, {}},
{{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}}, {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}, {}},
{{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } }, {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } },
})) }))
); );