X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fspirv.cpp;h=16168a8cb8725671197bf39567d276992e6c5695;hb=6f06479b765946bdd3174b2c05e7a1dda24c31c2;hp=233d15488dd043de95408e3642c075aba9d2d280;hpb=38712d8ecc57d043a2419ffbaeeb57f7a6586f14;p=libs%2Fgl.git diff --git a/source/glsl/spirv.cpp b/source/glsl/spirv.cpp index 233d1548..16168a8c 100644 --- a/source/glsl/spirv.cpp +++ b/source/glsl/spirv.cpp @@ -570,7 +570,7 @@ void SpirVGenerator::generate_composite_access(TypeDeclaration &result_type) throw internal_error("assignment to temporary composite"); else { - for(unsigned i: r_composite_chain) + for(unsigned &i: r_composite_chain) for(auto j=constant_ids.begin(); (i>=0x400000 && j!=constant_ids.end()); ++j) if(j->second==(i&0x3FFFFF)) i = j->first.int_value; @@ -1858,7 +1858,8 @@ void SpirVGenerator::visit(Iteration &iter) if(iter.init_statement) iter.init_statement->visit(*this); - variable_load_ids.clear(); + for(VariableDeclaration *v: AssignmentCollector().apply(iter)) + variable_load_ids.erase(v); Id header_id = next_id++; Id continue_id = next_id++;