Core Concepts
SYNTHFUZZ는 기존 테스트 사례에서 맞춤형 돌연변이를 자동으로 합성하고 적용하여 MLIR 컴파일러의 다양한 입력을 생성할 수 있다.
Abstract
SYNTHFUZZ는 MLIR 컴파일러를 위한 새로운 퍼징 기법을 제안한다. MLIR은 모듈식 컴파일러 설계를 지원하는 새로운 중간 표현(IR) 프레임워크로, 개발자가 사용자 정의 IR을 정의할 수 있다. 이로 인해 각 IR에 대한 맞춤형 테스트 생성기를 작성하기 어려워진다.
SYNTHFUZZ는 기존 테스트 사례에서 맞춤형 돌연변이를 자동으로 합성하고 적용한다. 이 맞춤형 돌연변이는 매개변수화되어 있어 대상 컨텍스트에 따라 구체화될 수 있다. 이를 통해 새로 도입된 MLIR 방언에 대한 맞춤형 입력 생성 로직을 수동으로 작성할 필요가 없어진다.
SYNTHFUZZ는 Grammarinator, MLIRSmith, NeuRI 등 기존 기법과 비교했을 때 다음과 같은 성능 향상을 보였다:
평균 1.16배 높은 코드 커버리지
평균 1.51배 높은 방언 쌍 커버리지
일반 MLIR 제약 위반 비율을 0.57배 낮춤
또한 SYNTHFUZZ는 CIRCT 프로젝트에서 이전에 발견되지 않은 버그를 발견했다.
Stats
SYNTHFUZZ는 Grammarinator, MLIRSmith, NeuRI 대비 평균 1.22배, 29.78배, 17.47배 높은 브랜치 커버리지를 달성했다.
SYNTHFUZZ는 Grammarinator, MLIRSmith, NeuRI 대비 평균 1.75배, 4.60배, 5.56배 높은 방언 쌍 커버리지를 달성했다.
Quotes
"SYNTHFUZZ는 새로 도입된 MLIR 방언에 대한 맞춤형 입력 생성 로직을 수동으로 작성할 필요가 없어진다."
"SYNTHFUZZ는 일반 MLIR 제약 위반 비율을 0.57배 낮췄다."