minkiminki / gocompa

Advanced Compiler Construction project
2 stars 0 forks source link

ssa 분석을 global variable에 대해서도? #13

Open minkiminki opened 6 years ago

minkiminki commented 6 years ago

지금은 global variable에 대해서는 ssa 분석과 모든 최적화를 포기한다. 그런데 global variable에 대해서도 ssa 분석을 할 경우 constant propagation, subexpression 최적화는 가능할 것으로 보인다. 이 경우 register allocation에서는 제외된다. 또한 다른 함수를 부를 경우는 글로벌 변수의 값은 전부 새로 쓴다(함수가 건드리는 글로벌 변수들을 추적해서 활용하는 더 잘 최적화하는 방법도 있다).

조금 더 공격적으로, write가 두 번 있을 경우 하나로 합치는 것을 고려할 수 있다.

minkiminki commented 6 years ago

테스트 케이스 몇개는 main 함수에 로컬 변수 선언이 안 되는지 글로벌 변수를 로컬 변수처럼 이용한다. 이거만 바꿔도 많은 최적화가 가능해질 듯하다.

=> 완료

minkiminki commented 6 years ago

gcd.mod를 보면 a[1]에 대해 너무 많은 로드가 생긴다. 이를 최적화 가능할까? 쉽지는 않아보임