위키득계정 ↗
기술

Yarpgen

Yarpgen기술
이름
Yet Another Random Program Generator
분류
컴파일러 테스트 생성기
주요 대상
C와 C플러스플러스
비교 자료
실행 결과 해시
Yarpgen은 컴파일러 검사를 위해 무작위 프로그램을 생성하는 도구다. 특히 최적화 과정의 오류를 드러낼 수 있는 코드를 만들고 여러 컴파일 결과를 비교하는 데 사용한다.

계산 결과를 비교하기

생성 프로그램을 여러 컴파일러나 최적화 수준으로 빌드한 뒤 실행 결과를 비교한다. 프로그램의 전역 변수 값을 반영한 해시가 비교 자료가 된다. 차이가 발견되면 해당 입력과 빌드 조건을 저장해 원인을 조사할 수 있다.

생성의 제약

무작위 생성이지만 아무 코드나 만드는 것은 아니다. 정의되지 않은 동작을 피하면서 최적화가 적용될 만한 계산을 구성하도록 설계된다. 구현에 따라 정해지는 동작은 허용하므로 결과 차이를 조사할 때는 구현 조건도 확인해야 한다.

검사와 재현의 연결

루프 최적화와 스칼라 최적화를 위한 계열이 구분된다. 발견된 차이는 재현 가능한 형태로 정리하고 작은 입력으로 줄이면 분석하기 쉬워진다. 많은 생성 테스트를 통과하더라도 컴파일러의 모든 변환이 정확하다는 증명이 되는 것은 아니다.

관련 문서

Csmith / C-Reduce / Cvise / Alive2