Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

구현할 최적화 #9

Open
minkiminki opened this issue Nov 3, 2018 · 6 comments
Open

구현할 최적화 #9

minkiminki opened this issue Nov 3, 2018 · 6 comments

Comments

@minkiminki
Copy link
Owner

  1. tail call optimization
  • 구현 끝
  1. register allocation
  • 열심히 하자...
  1. function inlining
  • 쉬울 것

위가 처음 계획. 아래는 추가로 해볼 수 있을 것들

  1. constant propagation
  • 안 어려울 듯?
  1. dead code elimination
  • liveness 분석이 되면 날로 먹는 최적화
  1. subexpression analysis
  • 이것도 안 어려울 듯?
@minkiminki
Copy link
Owner Author

minkiminki commented Nov 4, 2018

TODO : tail call에서 너무 에필로그를 많이 쓰게 되는데 에필로그 줄이기?

tail call 뒤의 return 지우기 => 완료

@minkiminki
Copy link
Owner Author

minkiminki commented Nov 4, 2018

test02 같은 경우는 register promotion이 있으면 성능이 좋아질듯(global variable이라 register로 못 넣는 상황)

=> 완료

@minkiminki
Copy link
Owner Author

minkiminki commented Nov 4, 2018

  • tail call optimization =>
  • inline DIM & DOFS =>
  • constant propagation =>
  • unreachable block elimination =>
  • liveness analysis =>
  • dead store elimination =>
  • (common subexpression =>)
  • register allocation =>
  • function inlining =>
  • (register promotion)

@minkiminki
Copy link
Owner Author

minkiminki commented Nov 4, 2018

DIM, DOFS를 인라이닝 시키는 방법도..

=> 완료

@minkiminki
Copy link
Owner Author

minkiminki commented Nov 18, 2018

Dead Store Elimination의 경우는 liveness 분석 후에 한번도 살아있지 않은 변수를 지우는 것으로 구현했다.

그런데 이런 경우는

while(a > 0) a := a - 1;
return;

위의 케이스에서 a를 지우지 못한다. 만약 최종적으로 쓰이는 변수만 남기는 식으로 처리하면 위의 케이스도 처리된다.

=> 완료 d881e5b

@minkiminki
Copy link
Owner Author

minkiminki commented Nov 21, 2018

DIM, DOFS를 컴파일 타임에 최대한 계산하게 해보자
=> 완료 fb12ff4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant