-
LLVM 프로젝트의 구조적 한계와 기술적 부채를 다각도로 분석하며, 개선이 필요한 영역을 구체적으로 지적
-
리뷰 부족, API 불안정성, 빌드 및 컴파일 시간, CI 불안정성 등 대규모 오픈소스 프로젝트 운영상의 병목 현상 제시
-
IR 설계 문제로는 undef 값 처리, 제약 조건 인코딩, 부동소수점 의미 체계, 명세 불완전성 등을 포함
-
백엔드 이질성, ABI 처리 혼란, GlobalISel·패스 매니저 이행 지연 등 장기적 구조 문제 지적
- LLVM의 현황을 부정하기보다, 지속적 개선과 기여 확대의 기회로 제시함
주요 구조적 문제
백엔드 및 성능 관련 문제
-
백엔드 간 이질성
- 중간단계는 통합되어 있으나, 백엔드는 각 타깃별로 독립적 수정이 많아 중복과 분기 증가
- 공통 최적화 대신 타깃 전용 훅을 추가하는 경향 존재
-
컴파일 시간
- JIT 및 대규모 IR 생성 언어(Rust, C++)에서 느림
-
-O0 빌드가 특히 느리며, TPDE 백엔드는 최대 10~20배 빠른 대안으로 제시됨
-
성능 추적 부재
- 공식적인 런타임 성능 추적 인프라가 없음
- LNT 시스템은 작동 불안정·UX 문제·데이터 부족 등으로 실효성 낮음
IR 설계 문제
-
undef 값 처리의 복잡성
- 사용마다 다른 값을 가질 수 있어 최적화 시 오류 유발
- 향후 poison 값으로 대체 가능성이 있으나, 메모리 내 poison 처리가 아직 미비
-
명세 불완전성과 비정합성
- 오래된 미해결 오동작 사례 존재
-
provenance 모델 등 설계적 난제 존재
- 이를 해결하기 위해 공식 명세 작업 그룹이 구성됨
-
제약 조건 인코딩의 일관성 부족
- poison 플래그, 메타데이터, 속성, assumes 등 다양한 방식이 혼재
- 정보 손실 또는 과도한 유지로 최적화에 부정적 영향
-
부동소수점(FP) 의미 체계 문제
-
신호 NaN, 비표준 환경, denormal 처리, x87 초과 정밀도 등에서 불일치 발생
- 제약된 FP intrinsic으로 별도 처리되어 복잡성 증가
기타 기술적 문제
결론
- 나열된 문제들은 LLVM의 성숙도와 규모에서 비롯된 구조적 과제로,
프로젝트 품질과 기여자 경험을 개선할 기회로 제시됨
- 일부 영역(빌드 최적화, ABI 라이브러리, 성능 추적 등)은 이미 개선 작업이 진행 중임
- 전체적으로 LLVM은 여전히 강력하지만, 지속적 리팩터링과 명세 정비가 필수적임