Как повысить производительность синтаксического анализа с помощью PCH или PTH?

Я использую Clang C API для анализа и получения диагностики. Я заметил, что все время использую один и тот же набор заголовков, поэтому я решил попробовать использовать PCH или PTH для повышения производительности.

Но я получаю диагностику, что ни PCH, ни PTH не использовались в то время как clang_parseTranslationUnit:

  • аргумент не используется во время компиляции: ‘-emit-pth’
  • /tmp/system/include/libcxx/iostream.pth: ввод ‘linker’ не используется
  • аргумент не используется во время компиляции: ‘-emit-pch’
  • /tmp/system/include/libcxx/iostream.pch: ввод ‘linker’ не используется

Я удивлен, что PCH и PTH не использовались при синтаксическом анализе, так как я могу использовать PCH или PTH или любой другой подход для повышения производительности синтаксического анализа?

PS.

PTH был создан с использованием clang++ -x c++-header iostream -emit-pth -o iostream.pthPCH аналогичным образом

Обновление 1:

я обнаружил Пример использования PCH:

// This will load all the symbols from 'IndexTest.c', excluding symbols
// from 'IndexTest.pch'.
char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" };
TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args, 0, 0);

Проблема в том, что теперь я получаю еще одно диагностическое предупреждение:

'-pch=/system/include/libcxx/iostream.pch' file not found

Похоже, что аргументы командной строки были проанализированы неправильно .. Что я делаю не так?

2

Решение

Нужно включить -Xclang перед каждым аргументом:

char *args[] = { "-Xclang", "-include-pch", "-Xclang", "IndexTest.pch" };

Увидеть https://reviews.llvm.org/diffusion/L/browse/cfe/trunk/test/Index/c-index-pch.c для вдохновения.

0

Другие решения


По вопросам рекламы [email protected]