X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramcompiler.cpp;h=9a3986a12b21e094824175bf0dc7b052dd2af776;hp=6b8d2eb8a6ae75bbd7d5ea74c7fe7bde4e4b39b6;hb=5089933d82e69c4485843781aa4c762fc0c49be7;hpb=7189f63c549e9061789c47726ff8d6d12afca1a0 diff --git a/source/programcompiler.cpp b/source/programcompiler.cpp index 6b8d2eb8..9a3986a1 100644 --- a/source/programcompiler.cpp +++ b/source/programcompiler.cpp @@ -643,6 +643,27 @@ void ProgramCompiler::DeclarationCombiner::visit(VariableDeclaration &var) ptr->type = var.type; if(var.init_expression) ptr->init_expression = var.init_expression; + if(var.layout) + { + if(ptr->layout) + { + for(vector::iterator i=var.layout->qualifiers.begin(); i!=var.layout->qualifiers.end(); ++i) + { + bool found = false; + for(vector::iterator j=ptr->layout->qualifiers.begin(); (!found && j!=ptr->layout->qualifiers.end()); ++j) + if(j->identifier==i->identifier) + { + j->value = i->value; + found = true; + } + + if(!found) + ptr->layout->qualifiers.push_back(*i); + } + } + else + ptr->layout = var.layout; + } remove_node = true; } else