From d54f3a1e58923f82e2b8dcebd80fd63718359663 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 5 Oct 2009 21:07:28 +0000 Subject: Encode the Clang branch and Subversion revision into a PCH file, and assume that PCH files from different Clang revisions are not compatible. Addresses . llvm-svn: 83323 --- clang/lib/Frontend/PCHWriter.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'clang/lib/Frontend/PCHWriter.cpp') diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index 08a1661e1d3..64a678ea450 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -394,7 +394,8 @@ void PCHWriter::WriteBlockInfoBlock() { RECORD(STAT_CACHE); RECORD(EXT_VECTOR_DECLS); RECORD(COMMENT_RANGES); - + RECORD(SVN_BRANCH_REVISION); + // SourceManager Block. BLOCK(SOURCE_MANAGER_BLOCK); RECORD(SM_SLOC_FILE_ENTRY); @@ -564,6 +565,17 @@ void PCHWriter::WriteMetadata(ASTContext &Context, const char *isysroot) { Record.push_back(pch::ORIGINAL_FILE_NAME); Stream.EmitRecordWithBlob(FileAbbrevCode, Record, MainFileNameStr); } + + // Subversion branch/version information. + BitCodeAbbrev *SvnAbbrev = new BitCodeAbbrev(); + SvnAbbrev->Add(BitCodeAbbrevOp(pch::SVN_BRANCH_REVISION)); + SvnAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // SVN revision + SvnAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // SVN branch/tag + unsigned SvnAbbrevCode = Stream.EmitAbbrev(SvnAbbrev); + Record.clear(); + Record.push_back(pch::SVN_BRANCH_REVISION); + Record.push_back(getClangSubversionRevision()); + Stream.EmitRecordWithBlob(SvnAbbrevCode, Record, getClangSubversionPath()); } /// \brief Write the LangOptions structure. -- cgit v1.2.3