From: John Kessenich Date: Mon, 7 Dec 2015 02:29:11 +0000 (-0700) Subject: SPV: Fix extra operands when using the "struct" form of a built-in taking an 'out... X-Git-Tag: upstream/0.1~341 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2359bd0a1dae6deae4e130fd34571d3c700ad91b;p=platform%2Fupstream%2Fglslang.git SPV: Fix extra operands when using the "struct" form of a built-in taking an 'out' param. --- diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 41b6c5d..1d77b02 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2892,9 +2892,11 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: } spv::Id id = 0; - if (libCall >= 0) + if (libCall >= 0) { + while (consumedOperands < (int)operands.size()) + operands.pop_back(); id = builder.createBuiltinCall(precision, typeId, stdBuiltins, libCall, operands); - else { + } else { switch (consumedOperands) { case 0: // should all be handled by visitAggregate and createNoArgOperation diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out index 7a57ac4..649c05a 100644 --- a/Test/baseResults/spv.intOps.vert.out +++ b/Test/baseResults/spv.intOps.vert.out @@ -193,7 +193,7 @@ Linked vertex stage: 97: 7(ivec4) IAdd 96 95 Store 9(iout) 97 101: 98(fvec3) Load 100(v3) - 106:105(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 101 104(i3out) + 106:105(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 101 107: 102(ivec3) CompositeExtract 106 1 Store 104(i3out) 107 108: 98(fvec3) CompositeExtract 106 0 @@ -211,7 +211,7 @@ Linked vertex stage: 119: 7(ivec4) VectorShuffle 118 117 4 5 6 3 Store 9(iout) 119 122: 18(float) Load 121(v1) - 126:125(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 122 124(i1out) + 126:125(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 122 127: 6(int) CompositeExtract 126 1 Store 124(i1out) 127 128: 18(float) CompositeExtract 126 0 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 647ba85..3d84f80 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "SPIRV99.822" +#define GLSLANG_REVISION "SPIRV99.823" #define GLSLANG_DATE "06-Dec-2015"