안녕하세요, ./c-to-ll.sh 스크립트가 안돼서 benchmark directory에 .ll 파일들을 넣어주신 것 잘 알고 있습니다. 패스를 짜려면 LLVM IR 문법에 익숙해야 되던데 benchmark directory에 있는 .c 랑 .ll 파일들이 아직 LLVM IR 문법이 안 익숙한 제가 이해하기에는 복잡했고 제가 직접 .c 파일을 만들며 실험을 할 수 없어서 배우는데 있어서 많은 어려움이 있었습니다. 그래서 제가 직접 작성한 간단한 .c 파일들을 $ clang -emit-llvm -S <.c file> -o <.ll file> 을 이용해서 .ll 파일로 변환하면서 LLVM IR 문법을 익혔습니다. 하지만 나중에 benchmark directory 에 있는 .c 파일들을 $ clang -emit-llvm -S <.c file> -o <.ll file> 을 사용해서 변화해보니 조교님께서 올려주신 .ll 파일이랑 다른 부분들이 존재하더라고요. 예를 들어, malloc을 부를 때 $ clang -emit-llvm -S <.c file> -o <.ll file>로 변환된 .ll 파일은 ... = call noalias ptr @malloc(...) 바로 다음 instruction에 주소를 다른 임시 포인터에 store를 하던데 조교님이 올려주신 .ll 파일에는 그렇지 않더라고요. C++ 코드가 LLVM IR로 변환될 수 있는 방법이 여럿 있을텐데 어떤 방법이 올바른 방법인지 알기가 어려워 패스를 구현하는데 어려움을 겪고 있습니다. 나중에 컴파일러 성능을 측정하실 때 아마 ./c-to-ll.sh를 사용하실 것 같은데, 혹시 스크립트는 언제쯤 작동이 될까요? 패스를 올바르고 효율적으로 구현하기 위해서 저 스크립트가 있으면 많은 도움을 얻을 수 있을 것 같습니다.
안녕하세요, ./c-to-ll.sh 스크립트가 안돼서 benchmark directory에 .ll 파일들을 넣어주신 것 잘 알고 있습니다. 패스를 짜려면 LLVM IR 문법에 익숙해야 되던데 benchmark directory에 있는 .c 랑 .ll 파일들이 아직 LLVM IR 문법이 안 익숙한 제가 이해하기에는 복잡했고 제가 직접 .c 파일을 만들며 실험을 할 수 없어서 배우는데 있어서 많은 어려움이 있었습니다. 그래서 제가 직접 작성한 간단한 .c 파일들을
$ clang -emit-llvm -S <.c file> -o <.ll file>
을 이용해서 .ll 파일로 변환하면서 LLVM IR 문법을 익혔습니다. 하지만 나중에 benchmark directory 에 있는 .c 파일들을$ clang -emit-llvm -S <.c file> -o <.ll file>
을 사용해서 변화해보니 조교님께서 올려주신 .ll 파일이랑 다른 부분들이 존재하더라고요. 예를 들어, malloc을 부를 때$ clang -emit-llvm -S <.c file> -o <.ll file>
로 변환된 .ll 파일은... = call noalias ptr @malloc(...)
바로 다음 instruction에 주소를 다른 임시 포인터에 store를 하던데 조교님이 올려주신 .ll 파일에는 그렇지 않더라고요. C++ 코드가 LLVM IR로 변환될 수 있는 방법이 여럿 있을텐데 어떤 방법이 올바른 방법인지 알기가 어려워 패스를 구현하는데 어려움을 겪고 있습니다. 나중에 컴파일러 성능을 측정하실 때 아마 ./c-to-ll.sh를 사용하실 것 같은데, 혹시 스크립트는 언제쯤 작동이 될까요? 패스를 올바르고 효율적으로 구현하기 위해서 저 스크립트가 있으면 많은 도움을 얻을 수 있을 것 같습니다.