문제가 생겼다..
똑같은 코드에 저번에 사용했던 패스 그대로 적용했는데 (참고 : https://blueee.tistory.com/14) 코드 내용이 늘어났다. 어떻게 이런 일이 일어날 수 있지?
사용한 python 코드
#!/usr/bin/env python
import numba as nb
@nb.jit(nopython=True)
def main():
sum = 0
for number in [31, 63, 62, 87, 14]:
sum += number
print("sum:", sum)
if __name__ == "__main__":
main()
opt -passes='instcombine,dce,gvn,dse' -S pythonArray.ll -o testOptimized.ll
해당 패스를 적용하면 162줄까지 줄어들었었다. 하지만 지금 적용해보면 224줄이 나온다.
opt -passes='dce,gvn,dse' -S pythonArray.ll -o testOptimized.ll
또 과거에 instcombine을 제거하고 패스를 적용했을 때 177줄까지 줄어들었었다. 하지만 지금은 209줄이 나온다.
일단 원래 이번주에 시도해보려고 했던 패스를 살펴보자.
이 파일은 메모리 참조를 레지스터 참조로 승격시킨다. 로드 및 저장만 사용하는 alloca 명령어를 장려한다.
ADCE는 적극적으로 코드 제거를 시도한다. 이 패스는 DCE와 유사하지만 다르게 입증될 때까지 값이 죽은 것으로 가정한다.
adce의 경우 어디에 추가해도 코드의 길이가 달라지지 않는다.
mem2reg는 추가했을 때 194줄까지 줄어들었다.
혹시 또 달라질까봐 증거사진 첨부 ..
하여튼 의문이다. 왜 코드 양이 늘어났는지 모르겠다.. ㅜㅜ
'CNUproject > 코드 동일성 검사 도구' 카테고리의 다른 글
23_IR에 Klee 함수 호출 직접 추가 (0) | 2023.10.19 |
---|---|
22 (0) | 2023.10.18 |
19_Docker와 KLEE 개념 및 설치 (1) | 2023.09.21 |
18_LLVM Pass 작성 후 적용하기 (with Z3) (2) | 2023.09.13 |
17_Python IR에 LLVM Pass 적용하기 (0) | 2023.09.11 |