uecker wrote:

> It seems to me that we could simplify the implementation by being a bit more 
> literal in the interpretation of the requirements: look only at the type, 
> alignment, name, and bitfield-width of members. Just don't bother checking 
> other stuff
> 
> I'd hope it can look more like a simple loop over the fields of the two 
> record types (similar to mergeFunctionTypes's checks of the functions' param 
> types), rather than starting with the very-complex 
> ASTStructuralEquivalence.cpp, and adding even more complexity to validate 
> attributes.

What I do in GCC is mostly look at those things required in the standard and I 
make sure that all field offsets are the same (e.g. if some attribute would 
change how fields are layed out, this would catch it).  This is a simple loop. 
GCC already had a generic mechanism to compare attributes on types which 
decides whether an attribute makes a type incompatible (.e.g. affects ABI such 
as "packed"), or requires a warning, or whether it is just fine. 

https://github.com/llvm/llvm-project/pull/132939
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to