Skip to content
Snippets Groups Projects
  • Ben Langmuir's avatar
    ef1b5dcd
    Allow multiple modules with the same name to coexist in the module cache · ef1b5dcd
    Ben Langmuir authored
    To differentiate between two modules with the same name, we will
    consider the path the module map file that they are defined by* part of
    the ‘key’ for looking up the precompiled module (pcm file).
    Specifically, this patch renames the precompiled module (pcm) files from
      cache-path/<module hash>/Foo.pcm
    to
      cache-path/<module hash>/Foo-<hash of module map path>.pcm
    
    In addition, I’ve taught the ASTReader to re-resolve the names of
    imported modules during module loading so that if the header search
    context changes between when a module was originally built and when it
    is loaded we can rebuild it if necessary.  For example, if module A
    imports module B
    
    first time:
    clang -I /path/to/A -I /path/to/B ...
    
    second time:
    clang -I /path/to/A -I /different/path/to/B ...
    
    will now rebuild A as expected.
    
    * in the case of inferred modules, we use the module map file that
    allowed the inference, not the __inferred_module.map file, since the
    inferred file path is the same for every inferred module.
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206201 91177308-0d34-0410-b5e6-96231b3b80d8
    ef1b5dcd
    History
    Allow multiple modules with the same name to coexist in the module cache
    Ben Langmuir authored
    To differentiate between two modules with the same name, we will
    consider the path the module map file that they are defined by* part of
    the ‘key’ for looking up the precompiled module (pcm file).
    Specifically, this patch renames the precompiled module (pcm) files from
      cache-path/<module hash>/Foo.pcm
    to
      cache-path/<module hash>/Foo-<hash of module map path>.pcm
    
    In addition, I’ve taught the ASTReader to re-resolve the names of
    imported modules during module loading so that if the header search
    context changes between when a module was originally built and when it
    is loaded we can rebuild it if necessary.  For example, if module A
    imports module B
    
    first time:
    clang -I /path/to/A -I /path/to/B ...
    
    second time:
    clang -I /path/to/A -I /different/path/to/B ...
    
    will now rebuild A as expected.
    
    * in the case of inferred modules, we use the module map file that
    allowed the inference, not the __inferred_module.map file, since the
    inferred file path is the same for every inferred module.
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206201 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.