diff --git a/Test/baseResults/hlsl.cbuffer-identifier.vert.out b/Test/baseResults/hlsl.cbuffer-identifier.vert.out index d1049259..4ac1813b 100644 --- a/Test/baseResults/hlsl.cbuffer-identifier.vert.out +++ b/Test/baseResults/hlsl.cbuffer-identifier.vert.out @@ -1,4 +1,6 @@ hlsl.cbuffer-identifier.vert +WARNING: 0:29: '' : mul() matrix size mismatch + Shader version: 500 0:? Sequence 0:22 Function Definition: @main(struct-VS_INPUT-vf4-vf31; ( temp structure{ temp 4-component vector of float Pos, temp 3-component vector of float Norm}) diff --git a/Test/baseResults/hlsl.mul-truncate.frag.out b/Test/baseResults/hlsl.mul-truncate.frag.out index cb53344d..d25f956b 100644 --- a/Test/baseResults/hlsl.mul-truncate.frag.out +++ b/Test/baseResults/hlsl.mul-truncate.frag.out @@ -1,4 +1,13 @@ hlsl.mul-truncate.frag +WARNING: 0:24: '' : mul() matrix size mismatch +WARNING: 0:25: '' : mul() matrix size mismatch +WARNING: 0:28: '' : mul() matrix size mismatch +WARNING: 0:29: '' : mul() matrix size mismatch +WARNING: 0:32: '' : mul() matrix size mismatch +WARNING: 0:33: '' : mul() matrix size mismatch +WARNING: 0:34: '' : mul() matrix size mismatch +WARNING: 0:35: '' : mul() matrix size mismatch + Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index d5dab1a8..c4187452 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -3238,7 +3238,7 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte // Index into the array to find the item being loaded. // Byte address buffers index in bytes (only multiples of 4 permitted... not so much a byte address - // buffer then, but that's what it calls itself. + // buffer then, but that's what it calls itself). int size = 0; @@ -5243,6 +5243,10 @@ void HlslParseContext::addGenMulArgumentConversion(const TSourceLoc& loc, TFunct // downstream. } + // Warn if we altered one of the arguments + if (arg0 != argAggregate->getSequence()[0] || arg1 != argAggregate->getSequence()[1]) + warn(loc, "mul() matrix size mismatch", "", ""); + // Put arguments back. (They might be unchanged, in which case this is harmless). argAggregate->getSequence()[0] = arg0; argAggregate->getSequence()[1] = arg1;