snu-sf-class / swpp202401

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

Problem In calling llvm.lifetime.start #169

Open jayden0701 opened 5 months ago

jayden0701 commented 5 months ago

안녕하세요, 현재 컴파일러에 function inlining을 추가하여 최적화를 진행중입니다.

해당 과정에서, matmul4의 어셈블리(.s)에서 llvm.lifetime.start/end를 통해 값을 관리하는 것 같은데,

call llvm.lifetime.start.p0 r2 sp call llvm.lifetime.start.p0 r2 r3 call llvm.lifetime.start.p0 r2 r5

과 같이 llvm.lifetime.start.p0 를 부르는 과정에서, interpreter이 llvm.lifetime.start가 정의되지 않았다면서 에러를 발생시킵니다.

llvm.lifetime.start/end가 어셈블리로 잘 이동되지 않는 문제가 있는 것 같은데, 혹시 백엔드 차원에서 문제가 있는 것인가 질문드리고 싶습니다

strikef commented 5 months ago

LLVM lifetime intrinsic은 declaration은 남아 있을 수 있어도 어셈블리로 넘어가는 단계에서 실제 코드에 남아 있어서는 안 됩니다. IR을 생성할 때 x86 환경에서 irgen을 이용하여 생성하셨는지 확인해주세요.