X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Foptimize.cpp;h=768cfd5dc761659f504011780e3e0cbc74f90c0d;hp=350e2eb746537be79ea9d9c1854f45a6b860b53a;hb=e2ed3de4cbbc682ff490a3b0b760b8a45260f611;hpb=24e4eea282917c3f6e4e16a2825372da64133e35 diff --git a/source/glsl/optimize.cpp b/source/glsl/optimize.cpp index 350e2eb7..768cfd5d 100644 --- a/source/glsl/optimize.cpp +++ b/source/glsl/optimize.cpp @@ -1242,10 +1242,10 @@ void UnusedVariableRemover::referenced(const Assignment::Target &target, Node &n { Assignment::Target::ChainType type1 = static_cast(a->target.chain[j]&0xC0); Assignment::Target::ChainType type2 = static_cast(target.chain[j]&0xC0); + unsigned index1 = a->target.chain[j]&0x3F; + unsigned index2 = target.chain[j]&0x3F; if(type1==Assignment::Target::SWIZZLE || type2==Assignment::Target::SWIZZLE) { - unsigned index1 = a->target.chain[j]&0x3F; - unsigned index2 = target.chain[j]&0x3F; if(type1==Assignment::Target::SWIZZLE && type2==Assignment::Target::SWIZZLE) covered = index1&index2; else if(type1==Assignment::Target::ARRAY && index1<4) @@ -1256,7 +1256,7 @@ void UnusedVariableRemover::referenced(const Assignment::Target &target, Node &n covered as true */ } else - covered = (a->target.chain[j]==target.chain[j]); + covered = (type1==type2 && (index1==index2 || index1==0x3F || index2==0x3F)); } if(covered)