나는 clang, llc 및 opt의 소스 코드를 조금 전에 살펴본 결과 각각에 최적화가 파이프 라인에 추가되는 방식을 확인했습니다. 내 이해는 clang이 opt와 llc가 호출하는 것과 동일한 메소드를 호출하여 opt와 llc가 파이프 라인에 가지고있는 것과 동일한 최적화를 추가한다는 것이다. 또한 clang은 opt 및/또는 lc를 별도로 호출하지 않습니다.clang, opt, llc 및 llvm-linker 사이의 관계
어느 시점에서 opt에서 파이프 라인의 다른 최적화로 끝날 수 있다는 점을 제외하면 이것은 거의 괜찮습니다 (clang과 비교할 때). llc와 clang의 비교에 대해서도 마찬가지다. 이 인식은 정확합니까?
또한 다음 작업 흐름을 보여주는 차트를 보았습니다. clang, opt, llvm-linker, 다시 IPA?를 선택한 다음 llc를 선택하십시오. 나는이 워크 플로우를 내가 clang에서 본 워크 플로우에 연결할 수 없다. LTO에 대한 나의 이해조차도 링커 (Gold)가 최적화를 호출한다는 것입니다. 여기서 llvm-linker의 역할을 이해할 수 없습니다.
모든 의견을 높이 평가합니다.
감사합니다. llvm-linker의 요점에 대해 더 많은 의견을 제시해 주시겠습니까? 가장 큰 질문은 시스템 링커와 동일하다는 것입니다. – esam
또 다른 질문 : 그들 중 하나의 코드 변경이 다른 것에 반영되지 않기 때문에 opt와 clang의 최적화가 동기화되지 않을 위험이 있다고 생각합니까? – esam
다릅니다. 비트 코드 파일을 함께 링크하는 llvm-link와 lang은 시스템 컴파일러를 대체하는 방식과 비슷한 시스템 링커를 대체하려는 시도입니다. – echristo