diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-10-11 16:05:00 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-10-11 16:05:00 +0000 |
| commit | 0db720f0dc5b62bfcde72a2761fc9793af4e4558 (patch) | |
| tree | 18abe09fce8137c1e1746e400c2f423bd2ca54ca /clang/tools | |
| parent | 59e34ececfa38ca198ff8f05094ccdaa4d2d5b28 (diff) | |
| download | bcm5719-llvm-0db720f0dc5b62bfcde72a2761fc9793af4e4558.tar.gz bcm5719-llvm-0db720f0dc5b62bfcde72a2761fc9793af4e4558.zip | |
[libclang] Improve AST serialization done by ASTUnit::Save().
The ASTUnit needs to initialize an ASTWriter at the beginning of
parsing to fully handle serialization of a translation unit that
imports modules. Do this by introducing an option to enable it, which
corresponds to CXTranslationUnit_ForSerialization on the C API side.
llvm-svn: 165717
Diffstat (limited to 'clang/tools')
| -rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 6 | ||||
| -rw-r--r-- | clang/tools/libclang/CIndex.cpp | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index c073b806985..9424d43db1c 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -2383,6 +2383,9 @@ static CXIdxClientFile index_importedASTFile(CXClientData client_data, printf(" | name: \"%s\"", clang_getCString(name)); printf(" | isImplicit: %d\n", info->isImplicit); clang_disposeString(name); + } else { + // PCH file, the rest are not relevant. + printf("\n"); } return (CXIdxClientFile)info->file; @@ -3055,7 +3058,8 @@ int write_pch_file(const char *filename, int argc, const char *argv[]) { argc - num_unsaved_files, unsaved_files, num_unsaved_files, - CXTranslationUnit_Incomplete); + CXTranslationUnit_Incomplete | + CXTranslationUnit_ForSerialization); if (!TU) { fprintf(stderr, "Unable to load translation unit!\n"); free_remapped_files(unsaved_files, num_unsaved_files); diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 78e4fc318ff..23d0768413e 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -2556,6 +2556,7 @@ static void clang_parseTranslationUnit_Impl(void *UserData) { bool IncludeBriefCommentsInCodeCompletion = options & CXTranslationUnit_IncludeBriefCommentsInCodeCompletion; bool SkipFunctionBodies = options & CXTranslationUnit_SkipFunctionBodies; + bool ForSerialization = options & CXTranslationUnit_ForSerialization; // Configure the diagnostics. DiagnosticOptions DiagOpts; @@ -2643,6 +2644,7 @@ static void clang_parseTranslationUnit_Impl(void *UserData) { /*AllowPCHWithCompilerErrors=*/true, SkipFunctionBodies, /*UserFilesAreVolatile=*/true, + ForSerialization, &ErrUnit)); if (NumErrors != Diags->getClient()->getNumErrors()) { |

