aboutsummaryrefslogtreecommitdiff
path: root/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-08-09 20:45:32 +0000
committerDouglas Gregor <dgregor@apple.com>2010-08-09 20:45:32 +0000
commitdf95a13ec73d2cdaea79555cb412d767f4963120 (patch)
tree0a4ce9f2fe7d41a48249fcc3ae97342c66b443e6 /tools/c-index-test/c-index-test.c
parenta277e7764bbe2752f900bf595654f9ad433f3961 (diff)
Use precompiled preambles for in-process code completion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110596 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/c-index-test/c-index-test.c')
-rw-r--r--tools/c-index-test/c-index-test.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 1530aa8697..db897b3a50 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -874,7 +874,8 @@ int perform_code_completion(int argc, const char **argv, int timing_only) {
struct CXUnsavedFile *unsaved_files = 0;
int num_unsaved_files = 0;
CXCodeCompleteResults *results = 0;
-
+ CXTranslationUnit *TU = 0;
+
if (timing_only)
input += strlen("-code-completion-timing=");
else
@@ -889,15 +890,20 @@ int perform_code_completion(int argc, const char **argv, int timing_only) {
CIdx = clang_createIndex(0, 1);
if (getenv("CINDEXTEST_EDITING")) {
- CXTranslationUnit *TU = clang_parseTranslationUnit(CIdx, 0,
- argv + num_unsaved_files + 2,
- argc - num_unsaved_files - 2,
- unsaved_files,
- num_unsaved_files,
- getDefaultParsingOptions());
- results = clang_codeCompleteAt(TU, filename, line, column,
- unsaved_files, num_unsaved_files,
- clang_defaultCodeCompleteOptions());
+ TU = clang_parseTranslationUnit(CIdx, 0,
+ argv + num_unsaved_files + 2,
+ argc - num_unsaved_files - 2,
+ unsaved_files,
+ num_unsaved_files,
+ getDefaultParsingOptions());
+ unsigned I, Repeats = 5;
+ for (I = 0; I != Repeats; ++I) {
+ results = clang_codeCompleteAt(TU, filename, line, column,
+ unsaved_files, num_unsaved_files,
+ clang_defaultCodeCompleteOptions());
+ if (I != Repeats-1)
+ clang_disposeCodeCompleteResults(results);
+ }
} else
results = clang_codeComplete(CIdx,
argv[argc - 1], argc - num_unsaved_files - 3,
@@ -918,7 +924,7 @@ int perform_code_completion(int argc, const char **argv, int timing_only) {
}
clang_disposeCodeCompleteResults(results);
}
-
+ clang_disposeTranslationUnit(TU);
clang_disposeIndex(CIdx);
free(filename);