위키득계정 ↗
기술

Alive2

Alive2기술
대상
LLVM 중간 표현과 변환
주요 작업
정제 관계 검사와 변환 검증
대표 도구
alive-tv
논리 해결기
Z3
Alive2는 LLVM 코드와 코드 변환의 정확성을 분석하는 도구 모음이다. 최적화 전후의 중간 표현을 비교해 변환이 허용된 의미를 보존하는지 검사한다.

컴파일러 최적화 검증

실행 파일이 더 작아지거나 빨라졌더라도 코드의 의미가 달라지면 올바른 최적화가 아니다. Alive2는 원래 표현과 변환된 표현의 관계를 분석한다. 단순히 두 코드의 문자열이나 명령 수를 비교하는 방식과는 목적이 다르다.

도구 구성

독립 실행형 alive-tv 외에 Clang과 LLVM opt에 연결하는 변환 검증 도구가 있다. 기호 실행기와 LLVM 표현을 자체 표현으로 바꾸는 계층도 포함한다. 사용 경로에 따라 필요한 LLVM 빌드 조건과 도구 버전을 맞춰야 한다.

함수 사이 변환의 한계

Alive2는 함수 간 최적화 변환을 지원하지 않는다고 안내한다. 이런 패스에 적용하면 실제 오류가 아닌 반례가 나올 수 있다. 결과를 평가할 때는 실행한 패스와 변환 종류를 확인하고 지원 범위를 벗어난 판정을 그대로 결함으로 단정하지 않는다.

관련 문서

Souper / Z3 / KLEE / SeaHorn