Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
3933dc51
Commit
3933dc51
authored
Mar 12, 2018
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nonuniform: prevent use of struct/block members.
parent
bd4603e0
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
201 additions
and
218 deletions
+201
-218
nonuniform.frag.out
Test/baseResults/nonuniform.frag.out
+7
-5
spv.nonuniform.frag.out
Test/baseResults/spv.nonuniform.frag.out
+2
-29
nonuniform.frag
Test/nonuniform.frag
+2
-2
spv.nonuniform.frag
Test/spv.nonuniform.frag
+0
-4
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+13
-0
ParseHelper.h
glslang/MachineIndependent/ParseHelper.h
+1
-0
glslang.y
glslang/MachineIndependent/glslang.y
+1
-2
glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp
+175
-176
No files found.
Test/baseResults/nonuniform.frag.out
View file @
3933dc51
...
...
@@ -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:25: 'constructor' : not enough data provided for construction
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
...
...
@@ -42,8 +44,8 @@ ERROR: node is still EOpNull!
0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float)
0:? 'nu_constf' ( nonuniform const float)
0:? 1.000000
0:? 'ins' (layout( location=1) smooth in structure{ global float a,
nonuniform
temp float b})
0:? 'inb' (layout( location=3) in block{ in float a,
nonuniform
in 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, in float b})
Linked fragment stage:
...
...
@@ -81,6 +83,6 @@ ERROR: node is still EOpNull!
0:? 'nu_uv4' ( nonuniform uniform 4-component vector of float)
0:? 'nu_constf' ( nonuniform const float)
0:? 1.000000
0:? 'ins' (layout( location=1) smooth in structure{ global float a,
nonuniform
temp float b})
0:? 'inb' (layout( location=3) in block{ in float a,
nonuniform
in 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, in float b})
Test/baseResults/spv.nonuniform.frag.out
View file @
3933dc51
spv.nonuniform.frag
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by
54
// Id's are bound by
42
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 33
44 50
EntryPoint Fragment 4 "main" 33
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
...
...
@@ -20,14 +20,6 @@ spv.nonuniform.frag
Name 30 "b"
Name 33 "nu_inv4"
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 17(nu_li) DecorationNonUniformEXT
Decorate 19 DecorationNonUniformEXT
...
...
@@ -37,12 +29,6 @@ spv.nonuniform.frag
Decorate 33(nu_inv4) DecorationNonUniformEXT
Decorate 39(nu_gf) 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
3: TypeFunction 2
6: TypeInt 32 1
...
...
@@ -57,13 +43,6 @@ spv.nonuniform.frag
34: TypeInt 32 0
35: 34(int) Constant 0
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
5: Label
16(a): 7(ptr) Variable Function
...
...
@@ -88,12 +67,6 @@ spv.nonuniform.frag
40: 28(float) Load 39(nu_gf)
41: 28(float) FMul 38 40
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
FunctionEnd
11(foo(i1;i1;): 6(int) Function None 8
...
...
Test/nonuniform.frag
View file @
3933dc51
...
...
@@ -25,5 +25,5 @@ void main()
nu_li
=
nonuniformEXT
();
// ERROR, no arguments
}
layout
(
location
=
1
)
in
struct
S
{
float
a
;
nonuniformEXT
float
b
;
}
ins
;
layout
(
location
=
3
)
in
inbName
{
float
a
;
nonuniformEXT
float
b
;
}
inb
;
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
;
// ERROR, not on member
Test/spv.nonuniform.frag
View file @
3933dc51
...
...
@@ -2,8 +2,6 @@
layout
(
location
=
0
)
nonuniformEXT
in
vec4
nu_inv4
;
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
)
{
...
...
@@ -19,5 +17,4 @@ void main()
float
b
;
b
=
nu_inv4
.
x
*
nu_gf
;
b
=
ins
.
a
+
inb
.
a
;
}
\ No newline at end of file
glslang/MachineIndependent/ParseHelper.cpp
View file @
3933dc51
...
...
@@ -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.
//
void
TParseContext
::
globalQualifierFixCheck
(
const
TSourceLoc
&
loc
,
TQualifier
&
qualifier
)
...
...
glslang/MachineIndependent/ParseHelper.h
View file @
3933dc51
...
...
@@ -351,6 +351,7 @@ public:
void
samplerCheck
(
const
TSourceLoc
&
,
const
TType
&
,
const
TString
&
identifier
,
TIntermTyped
*
initializer
);
void
atomicUintCheck
(
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
globalQualifierTypeCheck
(
const
TSourceLoc
&
,
const
TQualifier
&
,
const
TPublicType
&
);
bool
structQualifierErrorCheck
(
const
TSourceLoc
&
,
const
TPublicType
&
pType
);
...
...
glslang/MachineIndependent/glslang.y
View file @
3933dc51
...
...
@@ -3127,7 +3127,6 @@ struct_declaration
}
}
| type_qualifier type_specifier struct_declarator_list SEMICOLON {
parseContext.globalQualifierFixCheck($1.loc, $1.qualifier);
if ($2.arraySizes) {
parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type");
...
...
@@ -3137,7 +3136,7 @@ struct_declaration
$$ = $3;
parseContext.
checkNoShaderLayouts($1.loc, $1.shaderQualifiers
);
parseContext.
memberQualifierCheck($1
);
parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType);
parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true);
parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier);
...
...
glslang/MachineIndependent/glslang_tab.cpp
View file @
3933dc51
...
...
@@ -947,15 +947,15 @@ static const yytype_uint16 yyrline[] =
2896
,
2901
,
2906
,
2911
,
2919
,
2924
,
2929
,
2934
,
2942
,
2947
,
2952
,
2957
,
2965
,
2970
,
2975
,
2981
,
2987
,
2993
,
3002
,
3011
,
3017
,
3023
,
3029
,
3035
,
3040
,
3056
,
3061
,
3066
,
3074
,
3074
,
3085
,
3085
,
3095
,
3098
,
3111
,
3129
,
315
3
,
3157
,
3163
,
3168
,
317
9
,
3182
,
3188
,
3197
,
3200
,
3206
,
3210
,
3211
,
3217
,
3218
,
321
9
,
3220
,
3221
,
3222
,
3223
,
3227
,
3228
,
3232
,
3228
,
3244
,
324
5
,
3249
,
3249
,
3256
,
3256
,
3270
,
3273
,
3281
,
3289
,
3300
,
330
1
,
3305
,
3308
,
3314
,
3321
,
3325
,
3333
,
3337
,
3350
,
3353
,
335
9
,
3359
,
3379
,
3382
,
3388
,
3400
,
3412
,
3415
,
3421
,
3421
,
343
6
,
3436
,
3452
,
3452
,
3473
,
3476
,
3482
,
3485
,
3491
,
3495
,
350
2
,
3507
,
3512
,
3519
,
3522
,
3531
,
3535
,
3544
,
3547
,
3550
,
355
8
,
3558
,
3580
,
3586
,
3589
,
3594
,
3597
3085
,
3085
,
3095
,
3098
,
3111
,
3129
,
315
2
,
3156
,
3162
,
3167
,
317
8
,
3181
,
3187
,
3196
,
3199
,
3205
,
3209
,
3210
,
3216
,
3217
,
321
8
,
3219
,
3220
,
3221
,
3222
,
3226
,
3227
,
3231
,
3227
,
3243
,
324
4
,
3248
,
3248
,
3255
,
3255
,
3269
,
3272
,
3280
,
3288
,
3299
,
330
0
,
3304
,
3307
,
3313
,
3320
,
3324
,
3332
,
3336
,
3349
,
3352
,
335
8
,
3358
,
3378
,
3381
,
3387
,
3399
,
3411
,
3414
,
3420
,
3420
,
343
5
,
3435
,
3451
,
3451
,
3472
,
3475
,
3481
,
3484
,
3490
,
3494
,
350
1
,
3506
,
3511
,
3518
,
3521
,
3530
,
3534
,
3543
,
3546
,
3549
,
355
7
,
3557
,
3579
,
3585
,
3588
,
3593
,
3596
};
#endif
...
...
@@ -9026,7 +9026,6 @@ yyreduce:
case
475
:
#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
)
{
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"
);
...
...
@@ -9036,7 +9035,7 @@ yyreduce:
(
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
.
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
);
...
...
@@ -9046,38 +9045,38 @@ yyreduce:
(
*
(
yyval
.
interm
.
typeList
))[
i
].
type
->
mergeType
((
yyvsp
[
-
2
].
interm
.
type
));
}
}
#line 90
50
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 90
49
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
476
:
#line 315
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 315
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
typeList
)
=
new
TTypeList
;
(
yyval
.
interm
.
typeList
)
->
push_back
((
yyvsp
[
0
].
interm
.
typeLine
));
}
#line 905
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 905
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
477
:
#line 315
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 315
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
typeList
)
->
push_back
((
yyvsp
[
0
].
interm
.
typeLine
));
}
#line 906
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 906
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
478
:
#line 316
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 316
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
typeLine
).
type
=
new
TType
(
EbtVoid
);
(
yyval
.
interm
.
typeLine
).
loc
=
(
yyvsp
[
0
].
lex
).
loc
;
(
yyval
.
interm
.
typeLine
).
type
->
setFieldName
(
*
(
yyvsp
[
0
].
lex
).
string
);
}
#line 907
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 907
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
479
:
#line 316
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 316
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
arrayDimCheck
((
yyvsp
[
-
1
].
lex
).
loc
,
(
yyvsp
[
0
].
interm
).
arraySizes
,
0
);
...
...
@@ -9086,219 +9085,219 @@ yyreduce:
(
yyval
.
interm
.
typeLine
).
type
->
setFieldName
(
*
(
yyvsp
[
-
1
].
lex
).
string
);
(
yyval
.
interm
.
typeLine
).
type
->
newArraySizes
(
*
(
yyvsp
[
0
].
interm
).
arraySizes
);
}
#line 90
90
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 90
89
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
480
:
#line 317
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 317
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
}
#line 909
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 909
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
481
:
#line 318
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 318
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
const
char
*
initFeature
=
"{ } style initializers"
;
parseContext
.
requireProfile
((
yyvsp
[
-
2
].
lex
).
loc
,
~
EEsProfile
,
initFeature
);
parseContext
.
profileRequires
((
yyvsp
[
-
2
].
lex
).
loc
,
~
EEsProfile
,
420
,
E_GL_ARB_shading_language_420pack
,
initFeature
);
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
);
}
#line 910
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 910
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
482
:
#line 318
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 318
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
const
char
*
initFeature
=
"{ } style initializers"
;
parseContext
.
requireProfile
((
yyvsp
[
-
3
].
lex
).
loc
,
~
EEsProfile
,
initFeature
);
parseContext
.
profileRequires
((
yyvsp
[
-
3
].
lex
).
loc
,
~
EEsProfile
,
420
,
E_GL_ARB_shading_language_420pack
,
initFeature
);
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
-
2
].
interm
.
intermTypedNode
);
}
#line 91
20
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 91
19
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
483
:
#line 319
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 319
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
parseContext
.
intermediate
.
growAggregate
(
0
,
(
yyvsp
[
0
].
interm
.
intermTypedNode
),
(
yyvsp
[
0
].
interm
.
intermTypedNode
)
->
getLoc
());
}
#line 912
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 912
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
484
:
#line 3
200
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 3
199
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
parseContext
.
intermediate
.
growAggregate
((
yyvsp
[
-
2
].
interm
.
intermTypedNode
),
(
yyvsp
[
0
].
interm
.
intermTypedNode
));
}
#line 913
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 913
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
485
:
#line 320
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 320
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 914
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 914
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
486
:
#line 32
10
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 32
09
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 914
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 914
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
487
:
#line 321
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 321
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 915
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 915
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
488
:
#line 321
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 321
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 91
60
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 91
59
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
489
:
#line 321
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 321
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 916
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 916
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
490
:
#line 321
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 321
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 917
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 917
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
491
:
#line 32
20
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 32
19
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 917
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 917
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
492
:
#line 322
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 322
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 918
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 918
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
493
:
#line 322
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 322
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 91
90
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 91
89
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
494
:
#line 322
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 322
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 919
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 919
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
495
:
#line 322
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 322
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
}
#line 920
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 920
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
496
:
#line 322
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 322
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
push
();
++
parseContext
.
statementNestingLevel
;
}
#line 921
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 921
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
497
:
#line 323
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 323
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
pop
(
&
parseContext
.
defaultPrecision
[
0
]);
--
parseContext
.
statementNestingLevel
;
}
#line 92
20
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 92
19
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
498
:
#line 323
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 323
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
((
yyvsp
[
-
2
].
interm
.
intermNode
)
&&
(
yyvsp
[
-
2
].
interm
.
intermNode
)
->
getAsAggregate
())
(
yyvsp
[
-
2
].
interm
.
intermNode
)
->
getAsAggregate
()
->
setOperator
(
EOpSequence
);
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
-
2
].
interm
.
intermNode
);
}
#line 92
30
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 92
29
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
499
:
#line 324
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 324
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 923
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 923
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
500
:
#line 324
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 324
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 924
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 924
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
501
:
#line 324
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 324
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
++
parseContext
.
controlFlowNestingLevel
;
}
#line 92
50
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 92
49
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
502
:
#line 325
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 325
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
--
parseContext
.
controlFlowNestingLevel
;
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 925
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 925
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
503
:
#line 325
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 325
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
push
();
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 926
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 926
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
504
:
#line 326
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 326
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
pop
(
&
parseContext
.
defaultPrecision
[
0
]);
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 92
80
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 92
79
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
505
:
#line 32
70
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 32
69
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
}
#line 928
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 928
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
506
:
#line 327
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 327
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
((
yyvsp
[
-
1
].
interm
.
intermNode
)
&&
(
yyvsp
[
-
1
].
interm
.
intermNode
)
->
getAsAggregate
())
(
yyvsp
[
-
1
].
interm
.
intermNode
)
->
getAsAggregate
()
->
setOperator
(
EOpSequence
);
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
-
1
].
interm
.
intermNode
);
}
#line 929
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 929
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
507
:
#line 328
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 328
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
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
||
...
...
@@ -9307,11 +9306,11 @@ yyreduce:
(
yyval
.
interm
.
intermNode
)
=
0
;
// start a fresh subsequence for what's after this case
}
}
#line 931
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 931
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
508
:
#line 328
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 328
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
((
yyvsp
[
0
].
interm
.
intermNode
)
&&
(
yyvsp
[
0
].
interm
.
intermNode
)
->
getAsBranchNode
()
&&
((
yyvsp
[
0
].
interm
.
intermNode
)
->
getAsBranchNode
()
->
getFlowOp
()
==
EOpCase
||
(
yyvsp
[
0
].
interm
.
intermNode
)
->
getAsBranchNode
()
->
getFlowOp
()
==
EOpDefault
))
{
...
...
@@ -9320,76 +9319,76 @@ yyreduce:
}
else
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
growAggregate
((
yyvsp
[
-
1
].
interm
.
intermNode
),
(
yyvsp
[
0
].
interm
.
intermNode
));
}
#line 932
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 932
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
509
:
#line 3
300
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 3
299
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
}
#line 93
30
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 93
29
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
510
:
#line 330
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 330
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
static_cast
<
TIntermNode
*>
((
yyvsp
[
-
1
].
interm
.
intermTypedNode
));
}
#line 933
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 933
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
511
:
#line 330
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 330
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 934
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 934
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
512
:
#line 330
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 330
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
handleSelectionAttributes
(
*
(
yyvsp
[
-
1
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
intermNode
));
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 935
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 935
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
513
:
#line 331
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 331
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
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
);
}
#line 936
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 936
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
514
:
#line 332
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 332
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
-
2
].
interm
.
intermNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 937
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 937
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
515
:
#line 332
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 332
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
0
].
interm
.
intermNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
0
;
}
#line 93
80
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 93
79
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
516
:
#line 333
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 333
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
parseContext
.
boolCheck
((
yyvsp
[
0
].
interm
.
intermTypedNode
)
->
getLoc
(),
(
yyvsp
[
0
].
interm
.
intermTypedNode
));
}
#line 938
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 938
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
517
:
#line 333
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 333
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
boolCheck
((
yyvsp
[
-
2
].
lex
).
loc
,
(
yyvsp
[
-
3
].
interm
.
type
));
...
...
@@ -9400,28 +9399,28 @@ yyreduce:
else
(
yyval
.
interm
.
intermTypedNode
)
=
0
;
}
#line 940
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 940
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
518
:
#line 33
50
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 33
49
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 941
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 941
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
519
:
#line 335
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 335
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
handleSwitchAttributes
(
*
(
yyvsp
[
-
1
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
intermNode
));
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 942
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 942
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
520
:
#line 335
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 335
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++
parseContext
.
controlFlowNestingLevel
;
...
...
@@ -9430,11 +9429,11 @@ yyreduce:
parseContext
.
switchLevel
.
push_back
(
parseContext
.
statementNestingLevel
);
parseContext
.
symbolTable
.
push
();
}
#line 943
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 943
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
521
:
#line 336
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 336
6
"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
);
delete
parseContext
.
switchSequenceStack
.
back
();
...
...
@@ -9444,27 +9443,27 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 944
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 944
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
522
:
#line 337
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 337
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
}
#line 945
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 945
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
523
:
#line 338
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 338
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 946
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 946
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
524
:
#line 338
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 338
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
if
(
parseContext
.
switchLevel
.
size
()
==
0
)
...
...
@@ -9477,11 +9476,11 @@ yyreduce:
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpCase
,
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
),
(
yyvsp
[
-
2
].
lex
).
loc
);
}
}
#line 948
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 948
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
525
:
#line 3
400
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 3
399
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
if
(
parseContext
.
switchLevel
.
size
()
==
0
)
...
...
@@ -9491,28 +9490,28 @@ yyreduce:
else
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpDefault
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 949
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 949
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
526
:
#line 341
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 341
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 950
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 950
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
527
:
#line 341
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 341
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
handleLoopAttributes
(
*
(
yyvsp
[
-
1
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
intermNode
));
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 951
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 951
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
528
:
#line 342
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 342
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
!
parseContext
.
limits
.
whileLoops
)
parseContext
.
error
((
yyvsp
[
-
1
].
lex
).
loc
,
"while loops not available"
,
"limitation"
,
""
);
...
...
@@ -9521,11 +9520,11 @@ yyreduce:
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 952
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 952
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
529
:
#line 342
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 342
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
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
);
...
...
@@ -9533,21 +9532,21 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 953
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 953
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
530
:
#line 343
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 343
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
++
parseContext
.
loopNestingLevel
;
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 954
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 954
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
531
:
#line 344
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 344
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
!
parseContext
.
limits
.
whileLoops
)
parseContext
.
error
((
yyvsp
[
-
7
].
lex
).
loc
,
"do-while loops not available"
,
"limitation"
,
""
);
...
...
@@ -9559,22 +9558,22 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 956
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 956
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
532
:
#line 345
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 345
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
push
();
++
parseContext
.
loopNestingLevel
;
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 957
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 957
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
533
:
#line 345
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 345
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
pop
(
&
parseContext
.
defaultPrecision
[
0
]);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
makeAggregate
((
yyvsp
[
-
3
].
interm
.
intermNode
),
(
yyvsp
[
-
5
].
lex
).
loc
);
...
...
@@ -9587,81 +9586,81 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 959
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 959
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
534
:
#line 347
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 347
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 959
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 959
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
535
:
#line 347
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 347
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 960
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 960
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
536
:
#line 348
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 348
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
}
#line 961
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 961
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
537
:
#line 348
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 348
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
0
;
}
#line 962
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 962
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
538
:
#line 349
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 349
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
0
;
}
#line 963
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 963
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
539
:
#line 349
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 349
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
-
2
].
interm
.
intermTypedNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
}
#line 964
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 964
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
540
:
#line 350
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 350
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
parseContext
.
loopNestingLevel
<=
0
)
parseContext
.
error
((
yyvsp
[
-
1
].
lex
).
loc
,
"continue statement only allowed in loops"
,
""
,
""
);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpContinue
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 965
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 965
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
541
:
#line 350
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 350
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
parseContext
.
loopNestingLevel
+
parseContext
.
switchSequenceStack
.
size
()
<=
0
)
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
);
}
#line 966
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 966
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
542
:
#line 351
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 351
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpReturn
,
(
yyvsp
[
-
1
].
lex
).
loc
);
if
(
parseContext
.
currentFunctionType
->
getBasicType
()
!=
EbtVoid
)
...
...
@@ -9669,83 +9668,83 @@ yyreduce:
if
(
parseContext
.
inMain
)
parseContext
.
postEntryPointReturn
=
true
;
}
#line 967
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 967
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
543
:
#line 351
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 351
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
handleReturnValue
((
yyvsp
[
-
2
].
lex
).
loc
,
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
));
}
#line 968
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 968
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
544
:
#line 352
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 352
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
requireStage
((
yyvsp
[
-
1
].
lex
).
loc
,
EShLangFragment
,
"discard"
);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpKill
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 96
90
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 96
89
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
545
:
#line 353
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 353
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
parseContext
.
intermediate
.
setTreeRoot
((
yyval
.
interm
.
intermNode
));
}
#line 969
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 969
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
546
:
#line 353
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 353
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
((
yyvsp
[
0
].
interm
.
intermNode
)
!=
nullptr
)
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
growAggregate
((
yyvsp
[
-
1
].
interm
.
intermNode
),
(
yyvsp
[
0
].
interm
.
intermNode
));
parseContext
.
intermediate
.
setTreeRoot
((
yyval
.
interm
.
intermNode
));
}
}
#line 97
10
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 97
09
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
547
:
#line 354
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 354
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 971
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 971
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
548
:
#line 354
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 354
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 972
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 972
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
549
:
#line 35
50
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 35
49
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
requireProfile
((
yyvsp
[
0
].
lex
).
loc
,
~
EEsProfile
,
"extraneous semicolon"
);
parseContext
.
profileRequires
((
yyvsp
[
0
].
lex
).
loc
,
~
EEsProfile
,
460
,
nullptr
,
"extraneous semicolon"
);
(
yyval
.
interm
.
intermNode
)
=
nullptr
;
}
#line 973
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 973
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
550
:
#line 355
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 355
7
"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
).
intermNode
=
parseContext
.
handleFunctionDefinition
((
yyvsp
[
0
].
interm
).
loc
,
*
(
yyvsp
[
0
].
interm
).
function
);
}
#line 974
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 974
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
551
:
#line 356
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 356
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if
(
parseContext
.
currentFunctionType
->
getBasicType
()
!=
EbtVoid
&&
!
parseContext
.
functionReturnsValue
)
...
...
@@ -9761,52 +9760,52 @@ yyreduce:
(
yyval
.
interm
.
intermNode
)
->
getAsAggregate
()
->
setDebug
(
parseContext
.
contextPragma
.
debug
);
(
yyval
.
interm
.
intermNode
)
->
getAsAggregate
()
->
setPragmaTable
(
parseContext
.
contextPragma
.
pragmaTable
);
}
#line 976
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 976
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
552
:
#line 35
80
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 35
79
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
(
yyvsp
[
-
2
].
interm
.
attributes
);
parseContext
.
requireExtensions
((
yyvsp
[
-
4
].
lex
).
loc
,
1
,
&
E_GL_EXT_control_flow_attributes
,
"attribute"
);
}
#line 977
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 977
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
553
:
#line 358
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 358
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
(
yyvsp
[
0
].
interm
.
attributes
);
}
#line 978
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 978
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
554
:
#line 358
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 358
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
parseContext
.
mergeAttributes
((
yyvsp
[
-
2
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
attributes
));
}
#line 97
90
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 97
89
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
555
:
#line 359
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 359
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
parseContext
.
makeAttributes
(
*
(
yyvsp
[
0
].
lex
).
string
);
}
#line 979
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 979
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
556
:
#line 359
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 359
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
parseContext
.
makeAttributes
(
*
(
yyvsp
[
-
3
].
lex
).
string
,
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
));
}
#line 980
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 980
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
#line 98
10
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 98
09
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
default:
break
;
}
/* User semantic actions sometimes alter yychar, and that requires
...
...
@@ -10034,5 +10033,5 @@ yyreturn:
#endif
return
yyresult
;
}
#line 360
1
"MachineIndependent/glslang.y"
/* yacc.c:1906 */
#line 360
0
"MachineIndependent/glslang.y"
/* yacc.c:1906 */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment