snu-sf-class / swpp202401

Principles and Practices of Software Development Main Repository
14 stars 4 forks source link

[Project] Analysis Pass 추가 관련 질문 #87

Open jeongdaun opened 6 months ago

jeongdaun commented 6 months ago

Analysis Pass가 목표한 Pass 구현에 필요하여 추가를 하고자 합니다. project.pdf에 있는 내용 중 헷갈리는 부분이 있어 질문 드립니다.

For each sprint, each person in a team can add at most one pass that already exists in LLVM. Each existing optimization should be added via separate PR, and should come with unit tests as well. [4/26 Update] This pull request is exempt from the 3 pull request restriction. [4/25 Update] Or, you may include an arbitrary number of existing passes as part of your implementation, if it is closely related to the optimization you’re working on. ‘Relation’ includes, but is not limited to, complex analysis or canonicalization necessary for one’s optimization pass.

...

[5/10 Update] Writing & Running Unit Tests for Analysis Pass ● Each analysis pass PR should contain at least 3 unit tests. ● Unlike optimization passes, analysis results are not visible in IR programs, and requires direct access into LLVM’s internal data structure to check its functionality. ● Therefore, each unit test should be a C++ code that loads an LLVM IR program, runs the program via analysis pass, and asserts that your pass functions as expected. ● Other than the implementation method, the rule for optimization pass unit tests apply the same.

Existing Analysis Pass를 추가하는 경우

  1. Pull Request를 통해 따로 추가
  2. 새로운 pass를 구현하는데 "closely related" 된 경우, 따로 PR을 하지 않고, 해당 pass를 구현하면서 추가

둘 중 하나를 선택하면 되는게 맞을까요?

만약 항상 Pull Request를 통해서만 추가가 가능하다면 Analysis Pass의 경우 unit test에서 새로운 pass를 구현하는데 쓰이는 동작만 정상적으로 작동 하는지 체크하면 될까요?

strikef commented 6 months ago
  1. Pull Request를 통해 따로 추가
  2. 새로운 pass를 구현하는데 "closely related" 된 경우, 따로 PR을 하지 않고, 해당 pass를 구현하면서 추가

둘 중 하나를 선택하면 되는게 맞을까요?

네, 정확합니다. 그리고 1. 의 경우는 sprint별 3개 PR 제한에서 예외입니다.

만약 항상 Pull Request를 통해서만 추가가 가능하다면 Analysis Pass의 경우 unit test에서 새로운 pass를 구현하는데 쓰이는 동작만 정상적으로 작동 하는지 체크하면 될까요?

Analysis pass를 단독으로 추가한다면, 그 analysis pass가 단독으로, 의도한 방향으로 잘 동작하는지 확인할 수 있도록 unit test를 작성하셔야 합니다. 다른 pass 구현의 일부로 추가한다면 구현한 pass가 잘 동작하는지만 확인할 수 있도록 unit test를 작성하시면 됩니다.

jeongdaun commented 6 months ago

답변주셔서 감사합니다.