cishida added a comment.

In D124638#3481932 <https://reviews.llvm.org/D124638#3481932>, @jansvoboda11 
wrote:

> Can you describe how come the check is not reliable without this patch? It 
> might be worth fixing the underlying reason for the unreliability first.

Different search paths alter where a header path may be resolved, in these 
cases we attempt to match the header based on how it was included 
`<foo/bar.h>`. We determine how the header was included by assembling from 
`HeaderFileInfo::Framework` and the filename associated with the `FileEntry`. 
This becomes inaccurate if a framework header is found without a header map and 
theres multiple locations to find it. This happens in an Xcode configuration 
when you have a Framework target, so theres potentially the same named headers 
in

- DeviredData/.../foo.framework/Headers/bar.h
- SDKROOT/foo.framework/Headers/bar.h
- SRCROOT/foo/bar.h

and search paths for all of them (depending on order). 
Given all the potential cases to cover, I think it would make sense to properly 
track what the include name was during lookup time as a reference-able source 
of truth.

Thank you for pointing out the potential performance cost. I could hold this 
information as apart of a container in `HeaderSearch` itself instead. This 
approach looks similar to `HeaderSearch:: IncludeAliases` which is only used 
for `include_alias`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124638/new/

https://reviews.llvm.org/D124638

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to