snu-sf-class / swpp202401

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

[Project] Analysis Pass를 사용하면 빌드에 실패하는 문제 #149

Open wjshim2003 opened 5 months ago

wjshim2003 commented 5 months ago

#129에서 언급된 것처럼 AliasAnalysis.h를 사용하는 경우 빌드에 실패하는 문제가 발생했습니다. #129에 명시된 것처럼 c++17로 컴파일하게 하면 pass.cpp는 컴파일에 성공하는데, opt.cpp를 빌드하는 과정에서 같은 문제가 발생합니다. 프로젝트 전체의 컴파일 옵션을 바꾸어야 하나요?

strikef commented 5 months ago

opt.cpp 등의 코드는 C++17로 컴파일하게 변경 시 std::expected 등 C++23의 기능을 못 써 컴파일이 불가능한 경우가 생길 수 있습니다. 최적화 패스의 헤더에 AliasAnalysis.h 가 포함되지 않는다면 opt.cpp 를 컴파일하는 과정에서는 해당 문제가 발생하지 않을 것으로 예상되는데, 혹시 해당 방향으로 변경이 가능하신가요?

wjshim2003 commented 5 months ago

최적화 헤더에 AliasAnalysis.h가 직접 포함되지 않아도 AliasAnalysis.h가 헤더로 포함된 파일을 참조하는 과정에서 문제가 발생하는 것 같습니다.

strikef commented 5 months ago

컴파일 단계와 링킹 단계 중 어디서 문제가 발생하나요? 에러 메시지가 ld.lld 등으로 시작하면 링커 문제, 헤더 파일 이름 등이 많이 들어 있으면 컴파일 문제입니다.

wjshim2003 commented 5 months ago

컴파일 단계 문제입니다.

strikef commented 5 months ago

최적화 헤더에 AliasAnalysis.h가 직접 포함되지 않아도 AliasAnalysis.h가 헤더로 포함된 파일을 참조하는 과정에서 문제가 발생하는 것 같습니다.

헤더로 포함된 파일을 참조한다는 것은 .cpp 파일을 말씀하시는 걸까요? .cpp 파일이 C++17 환경에서 오브젝트나 라이브러리 파일로 컴파일이 된다면, 그 뒤에 다른 파일에서 해당 라이브러리를 참조하는 것으로는 현재 발생하는 문제가 생기지 않습니다.

해당 문제가 발생하는 것은 AliasAnalysis.h가 어떤 식으로든 헤더에 포함된 경우로 보입니다. 해당 파일을 헤더에 포함하지 않고 코드를 작성하기는 어려운 상황인가요?

wjshim2003 commented 5 months ago

opt.cpp의 다른 헤더에서 AnalysisAnalysis.h를 참조했던 것 같습니다. 해결되었습니다. 감사합니다.