У меня есть ModulePass, который работает с инструментом opt, но мне трудно понять, как сделать его доступным для clang в командной строке. Мой текущий рабочий процесс, используя мой проход:Сделать модуль LLVM ModulePass доступным в командной строке clang
- лязгом -c -emit-LLVM [с-файлы исходного кода]
- LLVM-ссылка [LLVM файлов] битового кода
- неавтоматического -load [PassName]. так - [передать имя] [связан LLVM файл]
- ооо [полученный файл битового кода]
- НКУ [полученный ассемблер файл] -о [цель]
Я хотел бы получить мой пропуск интегрирован с команда clang чтобы он мог быть вызван как часть сборки существующего программного обеспечения (например, C++ standard library) без необходимости переделывать всю систему сборки для каждой вещи, которую я компилирую. Я видел подсказки о том, как это сделать, но мне не удалось собрать эти фрагменты в рабочую настройку.
Run an LLVM Pass Automatically with Clang описывает именно то, что я хочу, но метод, как представляется, устарел в LLVM 3.4 (PassManagerBuilder перенесен в унаследованное пространство имен).
LLVM - Run Own Pass automatically with clang, похоже, затрагивает основную проблему, но я надеялся, что смогу это сделать без необходимости изменять clang (что, как представляется, было предложено там).
Каков наилучший способ сделать новый проход доступным для clang используя LLVM 3.4?
Спасибо за ответ, тогда я продолжу настройку PassManagerBuilder. – Erik
Работает на llvm-3.7. Примечание для регистрации ModulePass: измените '' EP_EarlyAsPossible'' на '' EP_ModuleOptimizerEarly'', иначе llvm может рассматривать его как FunctionPass и попытаться вызвать '' runOnFunction''. – xywang