Why should I know this?

LLVM Pass 작성 - 2018년 이후 본문

LLVM-STUDY

LLVM Pass 작성 - 2018년 이후

die4taoam 2023. 10. 11. 17:14

 

https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-i-531c700e85eb

 

Writing LLVM Pass in 2018 — Part I

New Pass & Pass Manager in a Peek

medium.com

 

LLVM에서 PASS를 작성하는 방식에 변화가 있었습니다. 자세한 내용은 위 링크를 참고하시면 됩니다.

 

extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK
llvmGetPassPluginInfo() {
  return {
      LLVM_PLUGIN_API_VERSION, "LoopOptTutorial", "v0.1",
      [](PassBuilder &PB) {
        PB.registerPipelineParsingCallback(
            [](StringRef Name, LoopPassManager &LPM,
               ArrayRef<PassBuilder::PipelineElement>) {
              if (Name == "loop-opt-tutorial") {
                LPM.addPass(LoopOptTutorialPass());
                return true;
              }
              return false;
            });
      }};
}

LoopPass를 작성하시면 위처럼 LoopPassManager로 바꾸시면 됩니다.

 

void 	registerPipelineParsingCallback (const std::function< bool(StringRef Name, FunctionPassManager &, ArrayRef< PipelineElement >)> &C)
 
void 	registerPipelineParsingCallback (const std::function< bool(StringRef Name, LoopPassManager &, ArrayRef< PipelineElement >)> &C)
 
void 	registerPipelineParsingCallback (const std::function< bool(StringRef Name, ModulePassManager &, ArrayRef< PipelineElement >)> &C)

 

참고하세요.

'LLVM-STUDY' 카테고리의 다른 글

byval  (0) 2023.11.07
LLVM Study 관련 팁  (0) 2023.10.25
Souper 분석 관련 키워드들  (0) 2023.09.23
LLVM 에 기여하기 (feat.UFTRACE)  (0) 2023.09.15
LLVM 에 패치 보내기 튜토리얼  (0) 2023.07.02
Comments