Подтвердить что ты не робот

Можно ли добавлять аргументы для пользовательских проходов в llvm

Теперь мы реализуем проход анализа для llvm, следуя этому руководству. и необходимо передать дополнительный аргумент плагину, например, ниже:

opt -load /path/to/myplugin.so -mypass -mypass_option input.bc

Однако я не нашел ни одного руководства, рассказывающего мне, как это сделать. Поэтому мне интересно, возможно ли это на практике.

Спасибо заранее.

4b9b3361

Ответ 1

Вам следует использовать библиотеку CommandLine, которая встроена в LLVM. В основном, вы просто помещаете вверху .cpp файла прохода:

#include "llvm/Support/CommandLine.h"

static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename"));

Но я рекомендую вам проверить приведенную выше ссылку, у нее есть полная ссылка + удобный раздел быстрого запуска.

В качестве примера рассмотрим встроенный цикл разворачивания цикла - он определяет две беззнаковые и две логические опции, расположенные в верхней части исходного файла, используя cl::opt<unsigned> и cl::opt<bool>.