> On Jan 8, 2016, at 2:39 PM, Adrian Prantl <apra...@apple.com> wrote: > > 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.
In my particular crash isDiagnosedResult returns false for an OutOfDate result thus skipping the early return. -- adrian _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits