Commit 3933dc51 by John Kessenich

nonuniform: prevent use of struct/block members.

parent bd4603e0
...@@ -7,7 +7,9 @@ ERROR: 0:24: 'constructor' : too many arguments ...@@ -7,7 +7,9 @@ ERROR: 0:24: 'constructor' : too many arguments
ERROR: 0:24: 'assign' : cannot convert from ' const float' to ' nonuniform temp int' ERROR: 0:24: 'assign' : cannot convert from ' const float' to ' nonuniform temp int'
ERROR: 0:25: 'constructor' : not enough data provided for construction ERROR: 0:25: 'constructor' : not enough data provided for construction
ERROR: 0:25: 'assign' : cannot convert from ' const float' to ' nonuniform temp int' ERROR: 0:25: 'assign' : cannot convert from ' const float' to ' nonuniform temp int'
ERROR: 8 compilation errors. No code generated. ERROR: 0:28: 'nonuniformEXT' : not allowed on block or structure members
ERROR: 0:29: 'nonuniformEXT' : not allowed on block or structure members
ERROR: 10 compilation errors. No code generated.
Shader version: 450 Shader version: 450
...@@ -42,8 +44,8 @@ ERROR: node is still EOpNull! ...@@ -42,8 +44,8 @@ ERROR: node is still EOpNull!
0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float) 0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float)
0:? 'nu_constf' ( nonuniform const float) 0:? 'nu_constf' ( nonuniform const float)
0:? 1.000000 0:? 1.000000
0:? 'ins' (layout( location=1) smooth in structure{ global float a, nonuniform temp float b}) 0:? 'ins' (layout( location=1) smooth in structure{ global float a, temp float b})
0:? 'inb' (layout( location=3) in block{ in float a, nonuniform in float b}) 0:? 'inb' (layout( location=3) in block{ in float a, in float b})
Linked fragment stage: Linked fragment stage:
...@@ -81,6 +83,6 @@ ERROR: node is still EOpNull! ...@@ -81,6 +83,6 @@ ERROR: node is still EOpNull!
0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float) 0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float)
0:? 'nu_constf' ( nonuniform const float) 0:? 'nu_constf' ( nonuniform const float)
0:? 1.000000 0:? 1.000000
0:? 'ins' (layout( location=1) smooth in structure{ global float a, nonuniform temp float b}) 0:? 'ins' (layout( location=1) smooth in structure{ global float a, temp float b})
0:? 'inb' (layout( location=3) in block{ in float a, nonuniform in float b}) 0:? 'inb' (layout( location=3) in block{ in float a, in float b})
spv.nonuniform.frag spv.nonuniform.frag
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80005 // Generated by (magic number): 80005
// Id's are bound by 54 // Id's are bound by 42
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 33 44 50 EntryPoint Fragment 4 "main" 33
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source GLSL 450 Source GLSL 450
Name 4 "main" Name 4 "main"
...@@ -20,14 +20,6 @@ spv.nonuniform.frag ...@@ -20,14 +20,6 @@ spv.nonuniform.frag
Name 30 "b" Name 30 "b"
Name 33 "nu_inv4" Name 33 "nu_inv4"
Name 39 "nu_gf" Name 39 "nu_gf"
Name 42 "S"
MemberName 42(S) 0 "a"
MemberName 42(S) 1 "b"
Name 44 "ins"
Name 48 "inbName"
MemberName 48(inbName) 0 "a"
MemberName 48(inbName) 1 "b"
Name 50 "inb"
Decorate 13 DecorationNonUniformEXT Decorate 13 DecorationNonUniformEXT
Decorate 17(nu_li) DecorationNonUniformEXT Decorate 17(nu_li) DecorationNonUniformEXT
Decorate 19 DecorationNonUniformEXT Decorate 19 DecorationNonUniformEXT
...@@ -37,12 +29,6 @@ spv.nonuniform.frag ...@@ -37,12 +29,6 @@ spv.nonuniform.frag
Decorate 33(nu_inv4) DecorationNonUniformEXT Decorate 33(nu_inv4) DecorationNonUniformEXT
Decorate 39(nu_gf) DecorationNonUniformEXT Decorate 39(nu_gf) DecorationNonUniformEXT
Decorate 40 DecorationNonUniformEXT Decorate 40 DecorationNonUniformEXT
MemberDecorate 42(S) 1 DecorationNonUniformEXT
Decorate 44(ins) Location 1
MemberDecorate 48(inbName) 0 DecorationNonUniformEXT
Decorate 48(inbName) Block
Decorate 50(inb) Location 3
Decorate 52 DecorationNonUniformEXT
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
...@@ -57,13 +43,6 @@ spv.nonuniform.frag ...@@ -57,13 +43,6 @@ spv.nonuniform.frag
34: TypeInt 32 0 34: TypeInt 32 0
35: 34(int) Constant 0 35: 34(int) Constant 0
36: TypePointer Input 28(float) 36: TypePointer Input 28(float)
42(S): TypeStruct 28(float) 28(float)
43: TypePointer Input 42(S)
44(ins): 43(ptr) Variable Input
45: 6(int) Constant 0
48(inbName): TypeStruct 28(float) 28(float)
49: TypePointer Input 48(inbName)
50(inb): 49(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
16(a): 7(ptr) Variable Function 16(a): 7(ptr) Variable Function
...@@ -88,12 +67,6 @@ spv.nonuniform.frag ...@@ -88,12 +67,6 @@ spv.nonuniform.frag
40: 28(float) Load 39(nu_gf) 40: 28(float) Load 39(nu_gf)
41: 28(float) FMul 38 40 41: 28(float) FMul 38 40
Store 30(b) 41 Store 30(b) 41
46: 36(ptr) AccessChain 44(ins) 45
47: 28(float) Load 46
51: 36(ptr) AccessChain 50(inb) 45
52: 28(float) Load 51
53: 28(float) FAdd 47 52
Store 30(b) 53
Return Return
FunctionEnd FunctionEnd
11(foo(i1;i1;): 6(int) Function None 8 11(foo(i1;i1;): 6(int) Function None 8
......
...@@ -25,5 +25,5 @@ void main() ...@@ -25,5 +25,5 @@ void main()
nu_li = nonuniformEXT(); // ERROR, no arguments nu_li = nonuniformEXT(); // ERROR, no arguments
} }
layout(location=1) in struct S { float a; nonuniformEXT float b; } ins; layout(location=1) in struct S { float a; nonuniformEXT float b; } ins; // ERROR, not on member
layout(location=3) in inbName { float a; nonuniformEXT float b; } inb; layout(location=3) in inbName { float a; nonuniformEXT float b; } inb; // ERROR, not on member
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
layout(location=0) nonuniformEXT in vec4 nu_inv4; layout(location=0) nonuniformEXT in vec4 nu_inv4;
nonuniformEXT float nu_gf; nonuniformEXT float nu_gf;
layout(location=1) in struct S { float a; nonuniformEXT float b; } ins;
layout(location=3) in inbName { nonuniformEXT float a; float b; } inb;
nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f)
{ {
...@@ -19,5 +17,4 @@ void main() ...@@ -19,5 +17,4 @@ void main()
float b; float b;
b = nu_inv4.x * nu_gf; b = nu_inv4.x * nu_gf;
b = ins.a + inb.a;
} }
\ No newline at end of file
...@@ -2575,6 +2575,19 @@ void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& t ...@@ -2575,6 +2575,19 @@ void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& t
} }
// //
// Qualifier checks knowing the qualifier and that it is a member of a struct/block.
//
void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType)
{
globalQualifierFixCheck(publicType.loc, publicType.qualifier);
checkNoShaderLayouts(publicType.loc, publicType.shaderQualifiers);
if (publicType.qualifier.isNonUniform()) {
error(publicType.loc, "not allowed on block or structure members", "nonuniformEXT", "");
publicType.qualifier.nonUniform = false;
}
}
//
// Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level. // Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level.
// //
void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier) void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier)
......
...@@ -351,6 +351,7 @@ public: ...@@ -351,6 +351,7 @@ public:
void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer); void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer);
void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier); void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier);
void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier);
void memberQualifierCheck(glslang::TPublicType&);
void globalQualifierFixCheck(const TSourceLoc&, TQualifier&); void globalQualifierFixCheck(const TSourceLoc&, TQualifier&);
void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&); void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&);
bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
......
...@@ -3127,7 +3127,6 @@ struct_declaration ...@@ -3127,7 +3127,6 @@ struct_declaration
} }
} }
| type_qualifier type_specifier struct_declarator_list SEMICOLON { | type_qualifier type_specifier struct_declarator_list SEMICOLON {
parseContext.globalQualifierFixCheck($1.loc, $1.qualifier);
if ($2.arraySizes) { if ($2.arraySizes) {
parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type");
...@@ -3137,7 +3136,7 @@ struct_declaration ...@@ -3137,7 +3136,7 @@ struct_declaration
$$ = $3; $$ = $3;
parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.memberQualifierCheck($1);
parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType);
parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true);
parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier);
......
...@@ -947,15 +947,15 @@ static const yytype_uint16 yyrline[] = ...@@ -947,15 +947,15 @@ static const yytype_uint16 yyrline[] =
2896, 2901, 2906, 2911, 2919, 2924, 2929, 2934, 2942, 2947, 2896, 2901, 2906, 2911, 2919, 2924, 2929, 2934, 2942, 2947,
2952, 2957, 2965, 2970, 2975, 2981, 2987, 2993, 3002, 3011, 2952, 2957, 2965, 2970, 2975, 2981, 2987, 2993, 3002, 3011,
3017, 3023, 3029, 3035, 3040, 3056, 3061, 3066, 3074, 3074, 3017, 3023, 3029, 3035, 3040, 3056, 3061, 3066, 3074, 3074,
3085, 3085, 3095, 3098, 3111, 3129, 3153, 3157, 3163, 3168, 3085, 3085, 3095, 3098, 3111, 3129, 3152, 3156, 3162, 3167,
3179, 3182, 3188, 3197, 3200, 3206, 3210, 3211, 3217, 3218, 3178, 3181, 3187, 3196, 3199, 3205, 3209, 3210, 3216, 3217,
3219, 3220, 3221, 3222, 3223, 3227, 3228, 3232, 3228, 3244, 3218, 3219, 3220, 3221, 3222, 3226, 3227, 3231, 3227, 3243,
3245, 3249, 3249, 3256, 3256, 3270, 3273, 3281, 3289, 3300, 3244, 3248, 3248, 3255, 3255, 3269, 3272, 3280, 3288, 3299,
3301, 3305, 3308, 3314, 3321, 3325, 3333, 3337, 3350, 3353, 3300, 3304, 3307, 3313, 3320, 3324, 3332, 3336, 3349, 3352,
3359, 3359, 3379, 3382, 3388, 3400, 3412, 3415, 3421, 3421, 3358, 3358, 3378, 3381, 3387, 3399, 3411, 3414, 3420, 3420,
3436, 3436, 3452, 3452, 3473, 3476, 3482, 3485, 3491, 3495, 3435, 3435, 3451, 3451, 3472, 3475, 3481, 3484, 3490, 3494,
3502, 3507, 3512, 3519, 3522, 3531, 3535, 3544, 3547, 3550, 3501, 3506, 3511, 3518, 3521, 3530, 3534, 3543, 3546, 3549,
3558, 3558, 3580, 3586, 3589, 3594, 3597 3557, 3557, 3579, 3585, 3588, 3593, 3596
}; };
#endif #endif
...@@ -9026,7 +9026,6 @@ yyreduce: ...@@ -9026,7 +9026,6 @@ yyreduce:
case 475: case 475:
#line 3129 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3129 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier);
if ((yyvsp[-2].interm.type).arraySizes) { if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
...@@ -9036,7 +9035,7 @@ yyreduce: ...@@ -9036,7 +9035,7 @@ yyreduce:
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList); (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); parseContext.memberQualifierCheck((yyvsp[-3].interm.type));
parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true);
parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
...@@ -9046,38 +9045,38 @@ yyreduce: ...@@ -9046,38 +9045,38 @@ yyreduce:
(*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
} }
} }
#line 9050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 476: case 476:
#line 3153 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3152 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
} }
#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 477: case 477:
#line 3157 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3156 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
} }
#line 9067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 478: case 478:
#line 3163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3162 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).type = new TType(EbtVoid);
(yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
} }
#line 9077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 479: case 479:
#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3167 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0); parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0);
...@@ -9086,219 +9085,219 @@ yyreduce: ...@@ -9086,219 +9085,219 @@ yyreduce:
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes); (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes);
} }
#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 480: case 480:
#line 3179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3178 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
} }
#line 9098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 481: case 481:
#line 3182 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
const char* initFeature = "{ } style initializers"; const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
} }
#line 9109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 482: case 482:
#line 3188 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3187 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
const char* initFeature = "{ } style initializers"; const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
} }
#line 9120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 483: case 483:
#line 3197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3196 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
} }
#line 9128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 484: case 484:
#line 3200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
} }
#line 9136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 485: case 485:
#line 3206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3205 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 486: case 486:
#line 3210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3209 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 487: case 487:
#line 3211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3210 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 488: case 488:
#line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3216 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 489: case 489:
#line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 490: case 490:
#line 3219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 491: case 491:
#line 3220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3219 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 492: case 492:
#line 3221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3220 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 493: case 493:
#line 3222 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3221 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 494: case 494:
#line 3223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3222 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 495: case 495:
#line 3227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3226 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; } { (yyval.interm.intermNode) = 0; }
#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 496: case 496:
#line 3228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3227 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.push(); parseContext.symbolTable.push();
++parseContext.statementNestingLevel; ++parseContext.statementNestingLevel;
} }
#line 9211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 497: case 497:
#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3231 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel; --parseContext.statementNestingLevel;
} }
#line 9220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 498: case 498:
#line 3236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3235 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
} }
#line 9230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 499: case 499:
#line 3244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 500: case 500:
#line 3245 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3244 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 9242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 501: case 501:
#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3248 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
++parseContext.controlFlowNestingLevel; ++parseContext.controlFlowNestingLevel;
} }
#line 9250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 502: case 502:
#line 3252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3251 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
--parseContext.controlFlowNestingLevel; --parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 503: case 503:
#line 3256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3255 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.push(); parseContext.symbolTable.push();
++parseContext.statementNestingLevel; ++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel; ++parseContext.controlFlowNestingLevel;
} }
#line 9269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 504: case 504:
#line 3261 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3260 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel; --parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel; --parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 505: case 505:
#line 3270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3269 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = 0; (yyval.interm.intermNode) = 0;
} }
#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 506: case 506:
#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3272 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
} }
#line 9298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 507: case 507:
#line 3281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3280 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
...@@ -9307,11 +9306,11 @@ yyreduce: ...@@ -9307,11 +9306,11 @@ yyreduce:
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
} }
} }
#line 9311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 508: case 508:
#line 3289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3288 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
...@@ -9320,76 +9319,76 @@ yyreduce: ...@@ -9320,76 +9319,76 @@ yyreduce:
} else } else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
} }
#line 9324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 509: case 509:
#line 3300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3299 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; } { (yyval.interm.intermNode) = 0; }
#line 9330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 510: case 510:
#line 3301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3300 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); } { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
#line 9336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 511: case 511:
#line 3305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3304 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 512: case 512:
#line 3308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3307 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 513: case 513:
#line 3314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3313 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
} }
#line 9362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 514: case 514:
#line 3321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3320 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
} }
#line 9371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 515: case 515:
#line 3325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3324 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0; (yyval.interm.nodePair).node2 = 0;
} }
#line 9380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 516: case 516:
#line 3333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3332 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
} }
#line 9389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 517: case 517:
#line 3337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3336 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
...@@ -9400,28 +9399,28 @@ yyreduce: ...@@ -9400,28 +9399,28 @@ yyreduce:
else else
(yyval.interm.intermTypedNode) = 0; (yyval.interm.intermTypedNode) = 0;
} }
#line 9404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 518: case 518:
#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 519: case 519:
#line 3353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3352 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 520: case 520:
#line 3359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
// start new switch sequence on the switch stack // start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel; ++parseContext.controlFlowNestingLevel;
...@@ -9430,11 +9429,11 @@ yyreduce: ...@@ -9430,11 +9429,11 @@ yyreduce:
parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push(); parseContext.symbolTable.push();
} }
#line 9434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 521: case 521:
#line 3367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3366 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back(); delete parseContext.switchSequenceStack.back();
...@@ -9444,27 +9443,27 @@ yyreduce: ...@@ -9444,27 +9443,27 @@ yyreduce:
--parseContext.statementNestingLevel; --parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel; --parseContext.controlFlowNestingLevel;
} }
#line 9448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 522: case 522:
#line 3379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3378 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = 0; (yyval.interm.intermNode) = 0;
} }
#line 9456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 523: case 523:
#line 3382 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3381 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 524: case 524:
#line 3388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3387 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = 0; (yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0) if (parseContext.switchLevel.size() == 0)
...@@ -9477,11 +9476,11 @@ yyreduce: ...@@ -9477,11 +9476,11 @@ yyreduce:
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
} }
} }
#line 9481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 525: case 525:
#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3399 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = 0; (yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0) if (parseContext.switchLevel.size() == 0)
...@@ -9491,28 +9490,28 @@ yyreduce: ...@@ -9491,28 +9490,28 @@ yyreduce:
else else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
} }
#line 9495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 526: case 526:
#line 3412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3411 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 527: case 527:
#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 528: case 528:
#line 3421 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if (! parseContext.limits.whileLoops) if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
...@@ -9521,11 +9520,11 @@ yyreduce: ...@@ -9521,11 +9520,11 @@ yyreduce:
++parseContext.statementNestingLevel; ++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel; ++parseContext.controlFlowNestingLevel;
} }
#line 9525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 529: case 529:
#line 3429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3428 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
...@@ -9533,21 +9532,21 @@ yyreduce: ...@@ -9533,21 +9532,21 @@ yyreduce:
--parseContext.statementNestingLevel; --parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel; --parseContext.controlFlowNestingLevel;
} }
#line 9537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 530: case 530:
#line 3436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3435 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
++parseContext.loopNestingLevel; ++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel; ++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel; ++parseContext.controlFlowNestingLevel;
} }
#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 531: case 531:
#line 3441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if (! parseContext.limits.whileLoops) if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
...@@ -9559,22 +9558,22 @@ yyreduce: ...@@ -9559,22 +9558,22 @@ yyreduce:
--parseContext.statementNestingLevel; --parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel; --parseContext.controlFlowNestingLevel;
} }
#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 532: case 532:
#line 3452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3451 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.push(); parseContext.symbolTable.push();
++parseContext.loopNestingLevel; ++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel; ++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel; ++parseContext.controlFlowNestingLevel;
} }
#line 9574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 533: case 533:
#line 3458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3457 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
...@@ -9587,81 +9586,81 @@ yyreduce: ...@@ -9587,81 +9586,81 @@ yyreduce:
--parseContext.statementNestingLevel; --parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel; --parseContext.controlFlowNestingLevel;
} }
#line 9591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 534: case 534:
#line 3473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3472 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 535: case 535:
#line 3476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3475 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 536: case 536:
#line 3482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
} }
#line 9615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 537: case 537:
#line 3485 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3484 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermTypedNode) = 0; (yyval.interm.intermTypedNode) = 0;
} }
#line 9623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 538: case 538:
#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3490 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0; (yyval.interm.nodePair).node2 = 0;
} }
#line 9632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 539: case 539:
#line 3495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3494 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
} }
#line 9641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 540: case 540:
#line 3502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3501 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if (parseContext.loopNestingLevel <= 0) if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
} }
#line 9651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 541: case 541:
#line 3507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
} }
#line 9661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 542: case 542:
#line 3512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3511 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid) if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
...@@ -9669,83 +9668,83 @@ yyreduce: ...@@ -9669,83 +9668,83 @@ yyreduce:
if (parseContext.inMain) if (parseContext.inMain)
parseContext.postEntryPointReturn = true; parseContext.postEntryPointReturn = true;
} }
#line 9673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 543: case 543:
#line 3519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
} }
#line 9681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 544: case 544:
#line 3522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
} }
#line 9690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 545: case 545:
#line 3531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
} }
#line 9699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 546: case 546:
#line 3535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
if ((yyvsp[0].interm.intermNode) != nullptr) { if ((yyvsp[0].interm.intermNode) != nullptr) {
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
} }
} }
#line 9710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 547: case 547:
#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3543 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 548: case 548:
#line 3547 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3546 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
} }
#line 9726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 549: case 549:
#line 3550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3549 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
(yyval.interm.intermNode) = nullptr; (yyval.interm.intermNode) = nullptr;
} }
#line 9736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 550: case 550:
#line 3558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3557 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
} }
#line 9745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 551: case 551:
#line 3562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3561 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
// May be best done as post process phase on intermediate code // May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
...@@ -9761,52 +9760,52 @@ yyreduce: ...@@ -9761,52 +9760,52 @@ yyreduce:
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
(yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
} }
#line 9765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 552: case 552:
#line 3580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3579 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes); (yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
} }
#line 9774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 553: case 553:
#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3585 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.attributes) = (yyvsp[0].interm.attributes); (yyval.interm.attributes) = (yyvsp[0].interm.attributes);
} }
#line 9782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 554: case 554:
#line 3589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
} }
#line 9790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 555: case 555:
#line 3594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3593 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
} }
#line 9798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
case 556: case 556:
#line 3597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ #line 3596 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ {
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
} }
#line 9806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break; break;
#line 9810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ #line 9809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
default: break; default: break;
} }
/* User semantic actions sometimes alter yychar, and that requires /* User semantic actions sometimes alter yychar, and that requires
...@@ -10034,5 +10033,5 @@ yyreturn: ...@@ -10034,5 +10033,5 @@ yyreturn:
#endif #endif
return yyresult; return yyresult;
} }
#line 3601 "MachineIndependent/glslang.y" /* yacc.c:1906 */ #line 3600 "MachineIndependent/glslang.y" /* yacc.c:1906 */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment