현대적인 컴파일러는 고수준 프로그래밍 언어를 다양한 아키텍처에 걸쳐 머신 코드(machine code)로 정확하게 변환해야 하는 복잡한 소프트웨어 시스템입니다. 원래 WebAssembly를 위해 개발되었고 최근 Rust의 실험적 백엔드로 채택된 빠르고 현대적인 컴파일러 백엔드인 Cranelift는, LLVM에 비해 우수한 컴파일 속도와 x86-64, AArch64, s390x, RISCV64를 포함한 포괄적인 멀티 아키텍처 지원 덕분에 중요성이 점점 커지고 있습니다. 그러나 컴파일러 테스트 분야의 수십 년간의 발전에도 불구하고, Cranelift를 테스트하는 것은 여전히 다음과 같은 독특한 과제들을 안겨줍니다: (1) SSA (Static Single Assignment) 형태의 엄격한 강제 하에서 유효한 IR (Intermediate Representation)을 구축하는 것, (2) 백엔드 구성 요소를 압박할 수 있을 만큼 충분한 연산 밀도(computational density)를 가진 시퀀스를 생성하는 것, 그리고 (3) 이기종 아키텍처 전반에서 광범위한 백엔드 커버리지와 효율적인 근본 원인 분석(root cause analysis) 사이의 균형을 맞추는 것입니다. 이러한 과제를 해결하기 위해, 우리는 SSA 유효성을 보장하기 위한 구문 보존 계층적 생성 전략(syntax-preserving hierarchical generation strategy), 연산 밀도를 극대화하기 위한 생존성 가이드형 명령어 정제 메커니즘(liveness-guided instruction refinement mechanism), 그리고 이기종 백엔드 전반에서 효율적인 근본 원인 분석을 용이하게 하기 위한 진단 가이드형 교차 아키텍처 적응 스킴(diagnosis-guided cross-architecture adaptation scheme)을 통합한 차분 테스트(differential testing) 프레임워크인 CLIR을 제안합니다. 우리의 종합적인 평가 결과, CLIR은 기존의 최첨단 베이스라인(state-of-the-art baselines)보다 성능이 현저히 뛰어남을 입증했습니다. CLIR은 cranelift-fuzzgen, wasm-smith, WASMaker보다 각각 8배, 24배, 8배 더 많은 고유 버그를 탐지한 반면, RustSmith는 버그를 발견하지 못했습니다. 결과적으로, 72시간의 테스트 기간 내에 CLIR은 모든 대상 아키텍처에 걸쳐 24개의 버그를 발견했으며, 그 중 21개가 확인되었고 9개가 수정되었습니다.