- const VariableDeclaration *var1 = dynamic_cast<const VariableDeclaration *>(i->get());
- const VariableDeclaration *var2 = dynamic_cast<const VariableDeclaration *>(j->get());
- if(!var1 || !var1->type_declaration || !var2 || !var2->type_declaration)
- return false;
- if(!is_same_type(*var1->type_declaration, *var2->type_declaration))
- return false;
- if(var1->name!=var2->name || var1->array!=var2->array)
- return false;
- // TODO Compare array sizes
- // TODO Compare layout qualifiers for interface block members
+ if(type1==Assignment::Target::SWIZZLE && type2==Assignment::Target::SWIZZLE)
+ overlap = index1&index2;
+ else if(type1==Assignment::Target::ARRAY && index1<4)
+ overlap = index2&(1<<index1);
+ else if(type2==Assignment::Target::ARRAY && index2<4)
+ overlap = index1&(1<<index2);
+ // Treat other combinations as overlapping (shouldn't happen)