rsmith added a comment.

https://reviews.llvm.org/D31778 is related. We need to have a design for how 
ODR-like issues in C will be resolved before we'll know what the right fix is 
here. Prior to https://reviews.llvm.org/D31778 my intention had been to 
implement C's structural typing ("compatible type") rules and keep multiple 
definitions of `RecordDecl`s in C as separate entities, but 
https://reviews.llvm.org/D31778 is suggesting that we use something more 
ODR-like instead, which is also more in line with the direction that this patch 
takes.

It's notable that C has no notion of "typedef name for linkage", so this patch 
does not address all the typedef-related issues that might show up in C code. 
For example:

  typedef struct { ... } *ptr;

in two different modules would not be merged into a single type with this 
approach (you'd need to actually implement the C compatible type rules to get 
that to work). But maybe that's OK -- the above also does not (formally) work 
in C++, and it doesn't seem to cause major problems.


Repository:
  rL LLVM

https://reviews.llvm.org/D34510



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D34510: T... Vassil Vassilev via Phabricator via cfe-commits
    • [PATCH] D345... Richard Smith - zygoloid via Phabricator via cfe-commits
    • [PATCH] D345... Vassil Vassilev via Phabricator via cfe-commits
    • [PATCH] D345... Bruno Cardoso Lopes via Phabricator via cfe-commits
    • [PATCH] D345... Bruno Cardoso Lopes via Phabricator via cfe-commits
    • [PATCH] D345... Vassil Vassilev via Phabricator via cfe-commits

Reply via email to