1
새로운 기능 추가, 코드 줄 제거, 함수 호출 삽입 및 함수에 대한 인수 변경과 같은 프로그램 최적화를 작성 중입니다.LLVM 패스를 사용하여 코드를 변경할 수 있습니까?
이 모든 것이 LLVM Pass를 사용하여 가능하며, 그렇다면 어떻게이 코드를 작성할 수 있습니까?
LLVM 웹 사이트에 LLVM 패스 페이지를 작성하는 방법을 살펴 보았지만 코드 변경에 대해서는 설명하지 않았습니다.
예, 일부는 사소하지 않지만 그렇습니다. 나는 기존 기능을 추가/교체하고 그렇게했다. 하지만 전반적으로이 질문은 단일 스택 오버 플로우 질문에 너무 광범위 할 수 있습니다. – Brian
@Brian 배울 때 사용할 수있는 기능을 추가/삭제하는 예제 패스가 있습니까? – Programmer
예,이 작업을 수행하는 패스가 있습니다. - [Contech.cpp] (https://github.com/bprail/contech/blob/master/llvm-contech/Contech.cpp) : createMicroTaskWrapStruct. 이 함수는 IR에 새로운 함수를 삽입하고 [Contech.h] (https://github.com/bprail/contech/blob/master/llvm-contech/Contech.h)에서 호출됩니다. 여기서 LLVM 패스는 기존 함수 호출 및 해당 인수를 새 함수 호출로 대체하십시오. 나는이 출판 된 연구가 장난감의 예가 아니라는 것을 인정할 것이다. 그래서 그것은 읽기에는 다소 불투명 할 수있다. 그리고 그 때문에 사과드립니다. – Brian