Hi Richard,

This change 
> @@ -2239,16 +2240,21 @@ ASTReader::ReadControlBlock(ModuleFile &F,
[...]
> -          if (!DisableValidation && Result != Success &&
> -              (Result != ConfigurationMismatch || 
> !AllowConfigurationMismatch))
> +          if (DisableValidation ||
> +              (AllowConfigurationMismatch && Result == 
> ConfigurationMismatch))
> +            Result = Success;
> +
> +          // If we've diagnosed a problem, we're done.
> +          if (Result != Success &&
> +              isDiagnosedResult(Result, ClientLoadCapabilities))
>              return Result;

either causes or uncovers a bug:

> CC=/Volumes/Data/llvm/_build.ninja.debug/bin/clang # r256948
> rm -rf cache && mkdir cache
> rm -rf Test && mkdir Test
> echo 'module Test {
>   umbrella header "Test.h"
> }' >Test/module.modulemap
> touch Test/Test.h
> echo '#import <Test/Test.h>'>2.m
> 
> clang -x objective-c -fmodules -fmodules-cache-path=cache  -DA=0 -I. -c 2.m 
> -o 1.o
> clang -x objective-c -fmodules -fmodules-cache-path=cache -Werror -DA=0 -I. 
> -c 2.m -o 2.o
> 


After encountering a configuration mismatch or out-of-date error, we now 
continue instead of returning early and subsequently crash in

  ASTReader::ReadControlBlock()
    ASTReader::getInputFile()
      Cursor.JumpToBit(F.InputFileOffsets[ID-1]);

I’ll keep digging deeper, but I thought you may have an intuition of what’s 
going on here.
Is the behavior change intentional? From the commit message it sounds as if 
implicit module builds shouldn’t be affected.

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

Reply via email to