From 2c6f48b1f613c3161ff7052e831249be0307cbaa Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 20 May 2017 13:23:25 -0600 Subject: [PATCH] Fix #373: Implicitly make gl_FragColor a location=0 output. --- .../baseResults/remap.uniformarray.everything.frag.out | 1 + Test/baseResults/remap.uniformarray.none.frag.out | 1 + Test/baseResults/spv.always-discard.frag.out | 1 + Test/baseResults/spv.always-discard2.frag.out | 1 + Test/baseResults/spv.conditionalDiscard.frag.out | 1 + Test/baseResults/spv.conversion.frag.out | 1 + Test/baseResults/spv.deepRvalue.frag.out | 1 + Test/baseResults/spv.discard-dce.frag.out | 1 + Test/baseResults/spv.doWhileLoop.frag.out | 1 + Test/baseResults/spv.earlyReturnDiscard.frag.out | 1 + Test/baseResults/spv.flowControl.frag.out | 1 + Test/baseResults/spv.forLoop.frag.out | 1 + Test/baseResults/spv.forwardFun.frag.out | 1 + Test/baseResults/spv.functionCall.frag.out | 1 + Test/baseResults/spv.functionSemantics.frag.out | 1 + Test/baseResults/spv.glFragColor.frag.out | 1 + Test/baseResults/spv.length.frag.out | 1 + Test/baseResults/spv.localAggregates.frag.out | 1 + Test/baseResults/spv.loops.frag.out | 1 + Test/baseResults/spv.loopsArtificial.frag.out | 1 + Test/baseResults/spv.prepost.frag.out | 1 + Test/baseResults/spv.simpleFunctionCall.frag.out | 1 + Test/baseResults/spv.structAssignment.frag.out | 1 + Test/baseResults/spv.structDeref.frag.out | 1 + Test/baseResults/spv.structure.frag.out | 1 + Test/baseResults/spv.swizzle.frag.out | 1 + Test/baseResults/spv.test.frag.out | 1 + Test/baseResults/spv.texture.frag.out | 1 + Test/baseResults/spv.types.frag.out | 1 + Test/baseResults/spv.uniformArray.frag.out | 1 + Test/baseResults/spv.variableArrayIndex.frag.out | 1 + Test/baseResults/spv.varyingArray.frag.out | 1 + Test/baseResults/spv.varyingArrayIndirect.frag.out | 1 + Test/baseResults/spv.voidFunction.frag.out | 1 + Test/baseResults/spv.whileLoop.frag.out | 1 + glslang/MachineIndependent/Initialize.cpp | 10 +++++++++- 36 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out index ed906d53..efdf681b 100644 --- a/Test/baseResults/remap.uniformarray.everything.frag.out +++ b/Test/baseResults/remap.uniformarray.everything.frag.out @@ -8,6 +8,7 @@ remap.uniformarray.everything.frag MemoryModel Logical GLSL450 EntryPoint Fragment 5663 "main" 3608 4957 4339 5139 ExecutionMode 5663 OriginUpperLeft + Decorate 5139 Location 0 8: TypeVoid 1282: TypeFunction 8 13: TypeFloat 32 diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out index 526b9e49..3fde4b5e 100644 --- a/Test/baseResults/remap.uniformarray.none.frag.out +++ b/Test/baseResults/remap.uniformarray.none.frag.out @@ -16,6 +16,7 @@ remap.uniformarray.none.frag Name 35 "alpha" Name 47 "gl_FragColor" Name 52 "texSampler2D" + Decorate 47(gl_FragColor) Location 0 Decorate 52(texSampler2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out index 652d45c8..01f5732b 100644 --- a/Test/baseResults/spv.always-discard.frag.out +++ b/Test/baseResults/spv.always-discard.frag.out @@ -18,6 +18,7 @@ spv.always-discard.frag Name 30 "y" Name 36 "radius" Name 59 "gl_FragColor" + Decorate 59(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out index 0bbb9eee..7fa92c54 100755 --- a/Test/baseResults/spv.always-discard2.frag.out +++ b/Test/baseResults/spv.always-discard2.frag.out @@ -17,6 +17,7 @@ spv.always-discard2.frag Name 21 "tex_coord" Name 30 "y" Name 38 "gl_FragColor" + Decorate 38(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out index b3cb8e86..fd4a3667 100755 --- a/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -17,6 +17,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Name 17 "coord" Name 34 "gl_FragColor" Decorate 13(tex) DescriptorSet 0 + Decorate 34(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out index b38d84e8..bbe86749 100755 --- a/Test/baseResults/spv.conversion.frag.out +++ b/Test/baseResults/spv.conversion.frag.out @@ -51,6 +51,7 @@ spv.conversion.frag Name 454 "i_f4" Decorate 39(i_i) Flat Decorate 157(i_i4) Flat + Decorate 322(gl_FragColor) Location 0 Decorate 446(i_i2) Flat Decorate 448(i_i3) Flat 2: TypeVoid diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out index b8f4d061..334a7274 100644 --- a/Test/baseResults/spv.deepRvalue.frag.out +++ b/Test/baseResults/spv.deepRvalue.frag.out @@ -28,6 +28,7 @@ spv.deepRvalue.frag Name 133 "t" Name 146 "gl_FragColor" Decorate 111(samp2D) DescriptorSet 0 + Decorate 146(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out index 173ea260..5013bd37 100755 --- a/Test/baseResults/spv.discard-dce.frag.out +++ b/Test/baseResults/spv.discard-dce.frag.out @@ -18,6 +18,7 @@ spv.discard-dce.frag Name 30 "y" Name 36 "radius" Name 59 "gl_FragColor" + Decorate 59(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out index 9b8cee70..a279b0dd 100755 --- a/Test/baseResults/spv.doWhileLoop.frag.out +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -15,6 +15,7 @@ spv.doWhileLoop.frag Name 17 "bigColor" Name 27 "d" Name 32 "gl_FragColor" + Decorate 32(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out index 41441b7f..af8d61ae 100755 --- a/Test/baseResults/spv.earlyReturnDiscard.frag.out +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -24,6 +24,7 @@ spv.earlyReturnDiscard.frag Name 77 "b" Name 105 "gl_FragColor" Name 109 "threshhold3" + Decorate 105(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out index 274cb746..cf13a5e8 100755 --- a/Test/baseResults/spv.flowControl.frag.out +++ b/Test/baseResults/spv.flowControl.frag.out @@ -19,6 +19,7 @@ spv.flowControl.frag Name 25 "bigColor" Name 30 "smallColor" Name 35 "gl_FragColor" + Decorate 35(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out index 628c791f..80000b0b 100755 --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -26,6 +26,7 @@ spv.forLoop.frag Name 104 "f" Name 117 "i" Decorate 24(Count) Flat + Decorate 36(gl_FragColor) Location 0 Decorate 53(v4) Flat 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out index 65759531..f5b7c029 100755 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -32,6 +32,7 @@ spv.forwardFun.frag Decorate 27(f) RelaxedPrecision Decorate 28 RelaxedPrecision Decorate 30(gl_FragColor) RelaxedPrecision + Decorate 30(gl_FragColor) Location 0 Decorate 31 RelaxedPrecision Decorate 32 RelaxedPrecision Decorate 33 RelaxedPrecision diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out index 69a525f7..c69570ba 100755 --- a/Test/baseResults/spv.functionCall.frag.out +++ b/Test/baseResults/spv.functionCall.frag.out @@ -28,6 +28,7 @@ WARNING: 0:5: varying deprecated in version 130; may be removed in future releas Name 66 "g" Name 69 "gl_FragColor" Name 75 "bigColor" + Decorate 69(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out index 005a315b..e4d8887a 100755 --- a/Test/baseResults/spv.functionSemantics.frag.out +++ b/Test/baseResults/spv.functionSemantics.frag.out @@ -44,6 +44,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Name 133 "param" Name 136 "arg" Name 152 "gl_FragColor" + Decorate 152(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.glFragColor.frag.out b/Test/baseResults/spv.glFragColor.frag.out index febbdf46..737566aa 100755 --- a/Test/baseResults/spv.glFragColor.frag.out +++ b/Test/baseResults/spv.glFragColor.frag.out @@ -11,6 +11,7 @@ spv.glFragColor.frag Source GLSL 330 Name 4 "main" Name 9 "gl_FragColor" + Decorate 9(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out index 76f6ca63..b3564d81 100755 --- a/Test/baseResults/spv.length.frag.out +++ b/Test/baseResults/spv.length.frag.out @@ -14,6 +14,7 @@ spv.length.frag Name 14 "v" Name 26 "gl_FragColor" Name 32 "u" + Decorate 26(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index 7ffa8741..404563aa 100755 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -42,6 +42,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Name 135 "foo2" Decorate 15(foo3) Flat Decorate 90(condition) Flat + Decorate 108(gl_FragColor) Location 0 Decorate 128(samp2D) DescriptorSet 0 Decorate 134(foo) Flat Decorate 135(foo2) Flat diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out index 8b1b4807..2e7ef975 100755 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -49,6 +49,7 @@ spv.loops.frag Name 687 "d18" Name 698 "d17" Decorate 157(Count) Flat + Decorate 615(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out index 707a78df..91791c2d 100755 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -30,6 +30,7 @@ spv.loopsArtificial.frag Name 153 "d2" Name 154 "d3" Name 157 "Count" + Decorate 140(gl_FragColor) Location 0 Decorate 157(Count) Flat 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out index 410286ca..09135430 100755 --- a/Test/baseResults/spv.prepost.frag.out +++ b/Test/baseResults/spv.prepost.frag.out @@ -20,6 +20,7 @@ spv.prepost.frag Name 66 "z" Name 73 "v" Name 90 "gl_FragColor" + Decorate 90(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out index 2e6b671f..857c2c2a 100755 --- a/Test/baseResults/spv.simpleFunctionCall.frag.out +++ b/Test/baseResults/spv.simpleFunctionCall.frag.out @@ -13,6 +13,7 @@ spv.simpleFunctionCall.frag Name 9 "foo(" Name 12 "BaseColor" Name 17 "gl_FragColor" + Decorate 17(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out index eb796f7c..4f563362 100755 --- a/Test/baseResults/spv.structAssignment.frag.out +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -36,6 +36,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to MemberDecorate 9(lunarStruct2) 0 RelaxedPrecision MemberDecorate 10(lunarStruct3) 1 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(gl_FragColor) Location 0 Decorate 40(samp2D) DescriptorSet 0 Decorate 44(coord) RelaxedPrecision Decorate 45 RelaxedPrecision diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out index e60159f9..164641bd 100755 --- a/Test/baseResults/spv.structDeref.frag.out +++ b/Test/baseResults/spv.structDeref.frag.out @@ -40,6 +40,7 @@ spv.structDeref.frag Name 99 "gl_FragColor" Name 116 "samp2D" Name 122 "foo2" + Decorate 99(gl_FragColor) Location 0 Decorate 116(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out index f7cb2d2a..d9d3133e 100755 --- a/Test/baseResults/spv.structure.frag.out +++ b/Test/baseResults/spv.structure.frag.out @@ -24,6 +24,7 @@ spv.structure.frag Name 50 "samp2D" Name 54 "coord" Name 59 "foo" + Decorate 45(gl_FragColor) Location 0 Decorate 50(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out index 46978f8c..79b4387c 100755 --- a/Test/baseResults/spv.swizzle.frag.out +++ b/Test/baseResults/spv.swizzle.frag.out @@ -24,6 +24,7 @@ spv.swizzle.frag Name 81 "c" Name 83 "rep" Name 107 "blend" + Decorate 69(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out index bf0135ae..4f5fbaaf 100644 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -25,6 +25,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Name 49 "blend" Decorate 16(texSampler2D) DescriptorSet 0 Decorate 33(texSampler3D) DescriptorSet 0 + Decorate 43(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out index 467f2545..c2de2ea2 100755 --- a/Test/baseResults/spv.texture.frag.out +++ b/Test/baseResults/spv.texture.frag.out @@ -45,6 +45,7 @@ WARNING: 0:12: varying deprecated in version 130; may be removed in future relea Decorate 130(texSamplerCube) DescriptorSet 0 Decorate 145(shadowSampler1D) DescriptorSet 0 Decorate 164(shadowSampler2D) DescriptorSet 0 + Decorate 291(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out index 9a2d8e35..be5f1bf3 100755 --- a/Test/baseResults/spv.types.frag.out +++ b/Test/baseResults/spv.types.frag.out @@ -55,6 +55,7 @@ spv.types.frag Decorate 111(i_i3) Flat Decorate 118(u_i4) Flat Decorate 120(i_i4) Flat + Decorate 160(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out index 447ad4fd..c6fb0ffc 100644 --- a/Test/baseResults/spv.uniformArray.frag.out +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -16,6 +16,7 @@ spv.uniformArray.frag Name 35 "alpha" Name 47 "gl_FragColor" Name 52 "texSampler2D" + Decorate 47(gl_FragColor) Location 0 Decorate 52(texSampler2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index b4d3fe01..bc638fde 100755 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -38,6 +38,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Decorate 20(foo3) Flat Decorate 34(foo2) Flat Decorate 36(foo) Flat + Decorate 54(gl_FragColor) Location 0 Decorate 59(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out index 58833ea1..33eaf2b7 100755 --- a/Test/baseResults/spv.varyingArray.frag.out +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -18,6 +18,7 @@ spv.varyingArray.frag Name 45 "gl_FragColor" Name 48 "foo" Decorate 13(texSampler2D) DescriptorSet 0 + Decorate 45(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out index 9c018406..c36efd00 100755 --- a/Test/baseResults/spv.varyingArrayIndirect.frag.out +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -22,6 +22,7 @@ spv.varyingArrayIndirect.frag Decorate 13(texSampler2D) DescriptorSet 0 Decorate 22(b) Flat Decorate 31(a) Flat + Decorate 56(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out index 44348616..a5ad88af 100755 --- a/Test/baseResults/spv.voidFunction.frag.out +++ b/Test/baseResults/spv.voidFunction.frag.out @@ -20,6 +20,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Name 37 "gl_FragColor" Name 40 "BaseColor" Name 42 "d" + Decorate 37(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out index ce1e195d..8a545386 100755 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -15,6 +15,7 @@ spv.whileLoop.frag Name 24 "d" Name 28 "bigColor" Name 33 "gl_FragColor" + Decorate 33(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0dbd9e31..0771c86a 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5187,7 +5187,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion SpecialQualifier("gl_FrontFacing", EvqFace, EbvFace, symbolTable); SpecialQualifier("gl_FragCoord", EvqFragCoord, EbvFragCoord, symbolTable); SpecialQualifier("gl_PointCoord", EvqPointCoord, EbvPointCoord, symbolTable); - SpecialQualifier("gl_FragColor", EvqFragColor, EbvFragColor, symbolTable); + if (spvVersion.spv == 0) + SpecialQualifier("gl_FragColor", EvqFragColor, EbvFragColor, symbolTable); + else { + TSymbol* symbol = symbolTable.find("gl_FragColor"); + if (symbol) { + symbol->getWritableType().getQualifier().storage = EvqVaryingOut; + symbol->getWritableType().getQualifier().layoutLocation = 0; + } + } SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable); SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable); SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable);